我有一个看起来像这样的元组列表:
list = [('spam', 9), ('the', 7), ('in', 6), ('my', 6), ('by', 5), ('and', 4)]
我想将每个元组变成一个字符串。我有一些代码不能正常工作......
for tup in list:
tup = str(tup)
print(tup)
我有点失落。上面的代码只打印我开始使用的相同列表。有人可以帮帮我吗?我是python和编程的新手,所以如果这是一个菜鸟问题,我很抱歉。
答案 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'