'''
Stosując wyrażenie listotwórcze (list comprehension) utwórz listę numerów telefonów
(każdy jako str) o postaci +4812300XYYY , gdzie X może być cyfrą od 1 do 5,
a na każdej pozycji oznaczonej Y może być dowolna cyfra.
Oblicz długość listy (powinno być 5000).
Następnie wypisz na ekran dziesięć losowo wybranych numerów z tej listy.
'''

numery = ['+4812300' + str(x) + str(y1) + str(y2) + str(y3)
          for x in range(1, 6)
          for y1 in range(0, 10)
          for y2 in range(0, 10)
          for y3 in range(0, 10)]

numery = [f'+4812300{x}{y1}{y2}{y3}'
          for x in range(1, 6)
          for y1 in range(0, 10)
          for y2 in range(0, 10)
          for y3 in range(0, 10)]

# zamiast 3 oddzielne y w zakresie od 0 do 9, można użyć jednego w zakresie od 0 do 999
# :03 powoduje dopisanie zer na początku
numery = [f'+4812300{x}{y:03}'
          for x in range(1, 6)
          for y in range(0, 1000)]

# można też przecież użyć jednej liczby z zakresu od 1000 do 5999
# wtedy nawet zera wiodące nie są potrzebne
numery = [f'+4812300{x}' for x in range(1000, 6000)]

# print(numery)

print('Rozmiar listy:', len(numery))
print('Pierwsze 10 elementów:', numery[:10])
print('Ostatni element:', numery[-1])

# wypisz 10 losowych elementów
import random

# sposób 1: w pętli 10 razy losuję pozycję i z tej pozycji odczytuję element. teoretycznie mogą się powtórzyć
print('\nLosowe elementy:')
for _ in range(10):
    poz = random.randrange(5000)
    print(numery[poz])

# sposób 2: gotowa funkcja sample (ew. choices; sample - losowanie bez powtórzeń, choices - z możliwością powtórzenia)
print('\nLosowe elementy:')
for numer in random.sample(numery, 10):
    print(numer)
