2014-01-03 5 views
0

Я не знаю, я ли глуп, но у меня есть небольшая проблема. У меня есть список list1 списков. Как вы можете видеть ниже, элементы списка в этом списке - ints. В простом цикле я могу пройти через все эти списки. Так что это:присоединяется к списку списков должным образом

list1 = [ [0, 1], [2], [3], [4,5,6,7], [8,9], [10], [11,12], ...... ] 
for item in list1: 
    print item 

даст:

[0, 1] 
[2] 
[3] 
[4,5,6,7] 
... 

Допустим, мы находимся на первой итерации. item - [0, 1]. Я ищу однострочный код, который дает мне доступ к 0 и 1, потому что я хочу напечатать строку позже, которая выглядит так: «Это 0 и 1». Звучит легко? Я думал, что я просто join каждый item:

list1 = [ [0, 1], [2], [3], [4,5,6,7], [8,9], [10], [11,12], ...... ] 

for item in list1: 
    print [x for x in ''.join(item) ] 

дает эту ошибку:

print [x for x in ''.join(item) ] 
TypeError: sequence item 0: expected string, int found 

Я просто не могу присоединиться к [0, 1], потому что питон хочет меня использовать строки. Если я бросаю item в строку с этой строки:

print [x for x in ''.join(str(item)) ] 

я получаю этот уродливый результат:

['[', '0', ',', ' ', '1', ']'] 

Может кто-нибудь пожалуйста, скажите мне, как собственно это сделать? Сейчас я чувствую себя немного глупо. Как я уже говорил прежде, чем я хотел бы написать что-то вроде 'This is '.join(str(item)) (одна строка кода)

+0

Вы понимаете .join (пункт) и почему она имеет одинарные кавычки перед ним. –

+1

Можете ли вы объяснить, какой результат вы хотите получить? – shx2

+0

что-то вроде этого: 0.txt 1.txt 2.txt ... Кажется, что «карта» - это ключ – Johnny

ответ

2

Вместо преобразования всего подсписного текста в строку вам необходимо преобразовать каждый элемент в каждом подсписке в строку перед присоединением, например

>>> list1 = [ [0, 1], [2], [3], [4,5,6,7], [8,9], [10], [11,12] ] 
>>> for sublist in list1: 
...  print ' '.join(map(str, sublist)) 
... 
0 1 
2 
3 
4 5 6 7 
8 9 
10 
11 12 
1

Вы просто хотите, например:

for item in list1: 
    print " ".join(map(str, item)) 

В Python 3.x, вы можете сделать:

for item in list1: 
    print(*item) 
1

I want to print a line later on that looks like "This is 0 and 1".

list1 = [ [0, 1], [2], [3], [4,5,6,7], [8,9], [10], [11,12] ] 

for item in list1: 
    print ('This is {}.'.format(' and '.join(str(x) for x in item))) 
Смежные вопросы