以正确的方式加入列表列表

时间:2014-01-03 16:50:56

标签: python

我不知道我是不是很傻但是我有一个小问题。我有一个列表list1列表。如下所示,此列表中的列表项是整数。在一个简单的for循环中,我可以遍历所有这些列表。所以这个:

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]。我正在寻找的是一行代码,可让我访问01,因为我想稍后打印一行,看起来像“这是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]因为python要我使用字符串。如果我使用此行将item转换为字符串:

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

我得到了这个丑陋的结果:

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

任何人都可以告诉我如何正确地做到这一点?我现在感觉有点愚蠢。就像我之前说的那样,我想写一些像'This is '.join(str(item))(一行代码)

的东西

3 个答案:

答案 0 :(得分: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 :(得分:1)

你只想要,例如:

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

在Python 3.x中,你可以这样做:

for item in list1:
    print(*item)

答案 2 :(得分:1)

  

我想稍后打印一行,看起来像“这是0和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)))