我想用下面的代码打印python 3.x中的列表列表,但是它给出了一个错误。
lol=[[1,2],[3,4],[5,6],['five','six']]
for elem in lol:
print (":".join(elem))
# this is the error I am getting-> TypeError: sequence item 0: expected str instance, int found
我期待这个输出:
1:2
3:4
5:6
five:six
我可以使用下面的perl代码实现相同的输出(这仅供参考):
for (my $i=0;$i<scalar(@{$lol});$i++)
{
print join(":",@{$lol->[$i]})."\n";
}
我如何在python 3.x中执行此操作?
答案 0 :(得分:7)
我会去:
for items in your_list:
print (*items, sep=':')
这利用print
作为函数,不需要连接或显式字符串转换。
答案 1 :(得分:3)
无法加入int
唯一的字符串。您可以明确地将str
所有数据投射到for elem in lol:
print (":".join(map(str, elem)))
试试这样的事情
for elem in lol:
print (":".join(str(i) for i in elem))
或与发电机
format
或者您可以使用for elem in lol:
print (":".join("'{}'".format(i) for i in elem))
而不是强制转换为字符串(这允许您使用复杂的格式)
{{1}}
答案 2 :(得分:1)
使用list comprehension
和str.join
:
在加入之前将整数转换为字符串(使用str()
)
>>> lis = [[1,2],[3,4],[5,6],['five','six']]
>>> print ("\n".join([ ":".join(map(str,x)) for x in lis]))
1:2
3:4
5:6
five:six
或:
>>> print ("\n".join([ ":".join([str(y) for y in x]) for x in lis]))
1:2
3:4
5:6
five:six