1

我想用下面的代码在 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 中做到这一点?

4

3 回答 3

7

我会去:

for items in your_list:
    print (*items, sep=':')

这利用print了函数,不需要连接或显式字符串转换。

于 2013-06-22T14:57:42.737 回答
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))
于 2013-06-22T14:45:23.937 回答
1

使用一个list comprehensionstr.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
于 2013-06-22T14:44:52.977 回答