A szöveg típusú változók (stringobjektumok) .split() metódusa a szóközök és sorvégjelek (valamint –alapértelmezés szerint– néhány további karakter) mentén felhasogatja a stringet, s a kapott darabokat egy listában adja vissza (a kimenet áttördelve és megkurtítva):
>>> file= open('inf_e_20050519_m_04_lottosz.dat') >>> lst = file.readlines() >>> lst ['37 42 44 61 62\n', '18 42 54 83 89\n', '5 12 31 53 60\n', '1 28 47 56 70\n', '54 56 57 59 71\n', '7 21 33 39 86\n', … '12 28 34 61 70\n', '1 4 8 69 74\n', '4 15 46 49 59\n', '24 31 67 71 73\n', '12 26 36 46 49\n', '9 20 21 59 68'] >>> for i in range(len(lst)): ... lst[i]= lst[i].split() ... >>> lst [['37', '42', '44', '61', '62'], ['18', '42', '54', '83', '89'], ['5', '12', '31', '53', '60'], ['1', '28', '47', '56', '70'], ['54', '56', '57', '59', '71'], ['7', '21', '33', '39', '86'], … ['12', '28', '34', '61', '70'], ['1', '4', '8', '69', '74'], ['4', '15', '46', '49', '59'], ['24', '31', '67', '71', '73'], ['12', '26', '36', '46', '49'], ['9', '20', '21', '59', '68']]
Vegyük észre, hogy ez a metódus is levágja a sorvégjeleket.
Az előző ciklus helyett is írhatunk rövidebbet egyetlen sorba, indexek nélkül:
>>> file= open('inf_e_20050519_m_04_lottosz.dat') >>> lst = file.readlines() >>> lst = [line.split() for line in lst]
Vagy tömörebben leírva:
>>> lst= [line.split() for line in open('inf_e_20050519_m_04_lottosz.dat')] >>> lst [['37', '42', '44', '61', '62'], ['18', '42', '54', '83', '89'], ['5', '12', '31', '53', '60'], ['1', '28', '47', '56', '70'], ['54', '56', '57', '59', '71'], ['7', '21', '33', '39', '86'], … ['12', '28', '34', '61', '70'], ['1', '4', '8', '69', '74'], ['4', '15', '46', '49', '59'], ['24', '31', '67', '71', '73'], ['12', '26', '36', '46', '49'], ['9', '20', '21', '59', '68']]
A hasogatás után kapott stringeket számmá konvertálva:
>>> file= open('inf_e_20050519_m_04_lottosz.dat') >>> lst = file.readlines() >>> lst = [[int(str) for str in line.split()] for line in lst]
Vagy tömörebben leírva:
>>> lst= [[int(str) for str in line.split()] for line in open('inf_e_20050519_m_04_lottosz.dat')] >>> lst [[37, 42, 44, 61, 62], [18, 42, 54, 83, 89], [5, 12, 31, 53, 60], [1, 28, 47, 56, 70], [54, 56, 57, 59, 71], [7, 21, 33, 39, 86], … [12, 28, 34, 61, 70], [1, 4, 8, 69, 74], [4, 15, 46, 49, 59], [24, 31, 67, 71, 73], [12, 26, 36, 46, 49], [9, 20, 21, 59, 68]]
A fenti lista kezdő eleme értelemszerűen egy lista, melynek kezdő eleme egy szám:
>>> lst[0] [37, 42, 44, 61, 62] >>> lst[0][0] 37
Ezek után a Lottó című feladat 4. lépése (inf_e_20050519_m_04):
print('4. feladat') wno= int(input('Kérek egy egész számot 1 és 51 között: ')) print('A(z) ', wno, '. hét lottószámai: ', sep= '', end= '') for val in lst[wno-1]: print(val, end= ' ') print()