加入列表的元素

时间:2011-02-02 12:35:04

标签: python

我有一个元组列表,如:

data = [('a1', 'a2'), ('b1', 'b2')]

我想生成一个这样的字符串:"('a1', 'a2'), ('b1'. 'b2')"

如果我这样做:','.join(data),我收到错误:

TypeError: sequence item 0: expected string, tuple found

如果我想在一行中做某事而不做以下事情:

for elem in data:
  str += ',%s' % str(elem)
那么有办法吗?

4 个答案:

答案 0 :(得分:14)

使用生成器将元组转换为字符串,然后使用join()

>>> ', '.join(str(d) for d in data)
"('a1', 'a2'), ('b1', 'b2')"

答案 1 :(得分:1)

str()输出中删除左右括号:

>>> data = [('a1', 'a2'), ('b1', 'b2')]
>>> str(data)
"[('a1', 'a2'), ('b1', 'b2')]"
>>> str(data)[1:-1]
"('a1', 'a2'), ('b1', 'b2')"
>>> 

答案 2 :(得分:0)

','.join(str(i) for i in data)

答案 3 :(得分:0)

payne和marcog的答案是正确的,因为它们直接将元组转换为字符串。

如果您需要更灵活的输出格式,可以在生成器表达式中解压缩元组,并以这种方式将其值用作格式字符串的参数:

    ", ".join("first element: %s, second element: %s" % (str(x), str(y)) for x, y in data)

通过这种方式,您可以克服元组的默认str表示。