如何将具有多个元素的元组转换为字符串

时间:2013-12-11 22:15:38

标签: python list for-loop tuples converter

我有一个看起来像这样的元组列表:

list = [('spam', 9), ('the', 7), ('in', 6), ('my', 6), ('by', 5), ('and', 4)]

我想将每个元组变成一个字符串。我有一些代码不能正常工作......

for tup in list:
    tup = str(tup)
    print(tup)

我有点失落。上面的代码只打印我开始使用的相同列表。有人可以帮帮我吗?我是python和编程的新手,所以如果这是一个菜鸟问题,我很抱歉。

4 个答案:

答案 0 :(得分:3)

你正在做你想要的事情:把每个元组变成一个字符串。

问题是默认的字符串表示(事实上,人性化的str和程序员友好的repr)看起来与源代码完全相同:将('spam', 9)转换为字符串为您提供字符串"('spam', 9)"

如果你想要不同的东西,你可以做到。但是你必须在为它编写代码之前决定你想要什么。然后,只需使用字符串格式或串联,或join

例如,假设您希望它打印出来:

spam: 9
the: 7
in: 6
…

然后你可以这样做:

for tup in list:
    tup = '{}: {}'.format(*tup)
    print(tup)

或者,如果你想要这个:

You have 9 copies of "spam".
You have 7 copies of "the".
…

然后就是这样:

for tup in list:
    tup = 'You have {1} copies of "{0}"'.format(*tup)
    print(tup)

等等。

答案 1 :(得分:1)

你在找这样的东西吗?

for tup in my_list:
    tup = ' '.join(map(str,tup))
    print(tup)

编辑 - 只是解释一下:
' '.join(...) - 这是字符串.join方法,它需要一个连接字符串(此处为' ')和一个可迭代的参数。 iterable包含字符串 map(str,tup) - map()函数采用函数名称(在本例中为str)和iterable,并将函数应用于iterable的所有成员。因此,它会将元组放入字符串列表中,为.join方法做好准备。它相当于列表推导[str(i) for i in tup] 所以你也可以做tup = ' '.join(str(i) for i in tup)

答案 2 :(得分:1)

您可以尝试使用str.join()将每个元组的元素连接在一起。然后,它将要求您遍历列表的内容并将每个元素放入str.join()函数中。

答案 3 :(得分:1)

或者单线。 (正如更精细的答案的补充!):

>>> '; '.join(map(lambda tpl: '%s: %s' % tpl, list))
'spam: 9; the: 7; in: 6; my: 6; by: 5; and: 4'

考虑到Martijn Pieters的评论:

>>> ' '.join(map(lambda tpl: '%s' % tpl[0], list))
'spam the in my by and'