2009-12-15 13 views
1

Я прочитал файл и преобразовал каждую строку в список. Образец списка выглядит так:Python: Список целых чисел

['15', '2', '0'], ['63', '3', '445', '456' '0'], ['23 »,„4“,„0“]

я хочу, чтобы получить первый номер из каждого списка и преобразовать его в и целом так, когда я выполнять функцию т.е.

type(x) 
<type 'int'> is returned 

типа Кроме того, когда я печать x целые числа печатаются индивидуально, а не объединены. то есть, если я взял первые 3 номера из списка выше цифры не печатаются как:

+2

Ваш вопрос вроде расплывчато, как вы хотите, чтобы вывод будет. Пожалуйста уточни. –

+0

Было бы более полезно, если бы вы рассказали нам, как вы хотите напечатать цифры, а не то, что вы * не хотите (поскольку я предполагаю, что их бесконечное число). – tgray

ответ

1
# Converts all items in all lists to integers. 
ls = [map(int, x) for x in the_first_list] 

Или, если вы просто хотите, первые два пункта:

ls = [map(int, x[:2]) for x in the_first_list] 

В python 3.x вам также нужно будет обернуть карту в конструкторе списка, например,

ls = [list(map(int, x[:2])) ... 
+0

+1, хотя не уверен, что внутреннее понимание списка - это то, что ищет OP. возможно [map (int, x) для x в файле_first_list]? –

+0

Это преобразует все элементы в целые числа и сохраняет список неповрежденным, он просто хочет получить первое число каждого списка. – Kimvais

+0

Я немного изменил его, чтобы преобразовать его в список. –

0

Если я правильно понял ваш вопрос, [int x[0] for x in list_of_lists]

3

Если вы хотите получить список с первым номером каждого списка, [int(L[0]) for L in lines] (предполагается, что список списков называется lines); если вы хотите первый два номеров каждого списка (с вашего вопроса сложно сказать), [int(s) for L in lines for s in L[:2]]; и так далее.

Если вам не нужен список таких чисел, а просто сделать одну итерацию на них вы можете использовать выражение генератора, то есть:

for number in (int(s) for L in lines for s in L[:2]): 
    ...do something with number... 

или подход вложенных циклов, таких как эквивалент :

for L in lines: 
    for s in L[:2]: 
    number = int(s) 
    ...do something with number... 
7

Чтобы отдать свой Интс:

my_ints = [int(l[0]) for l in your_list] 

Чтобы распечатать их:

print "".join(map(str, my_ints)) 
+2

'my_ints = map (lambda n: int (n [0]), your_list)' также работает. –

0
lines = [['15', '2', '0'], ['63', '3', '445', '456' '0'], ['23', '4', '0']] 
first_values_as_ints = [int(line[0]) for line in lines] 
for x in first_values_as_ints: 
    print x, 
Смежные вопросы