【问题标题】:append tuples to a list将元组附加到列表
【发布时间】:2011-03-17 11:44:52
【问题描述】:

如何将以下每个元组(即列表中的元素)的内容附加到另一个已经包含“某物”的列表中? 所以,我想将以下内容附加到一个不为空的列表(例如:result[]):

l = [('AAAA', 1.11), ('BBB', 2.22), ('CCCC', 3.33)]

显然,以下内容不起作用:

for item in l:
    result.append(item)
    print result

我要打印:

[something, 'AAAA', 1.11] 
[something, 'BBB', 2.22] 
[something, 'CCCC', 3.33]

【问题讨论】:

  • 您希望将 所有 个元组一个接一个地附加到列表中吗?还是一次只有一个?换句话说,您是在寻找一个包含[something, tuple1, tuple2, tuple3] 的列表,还是多个列表[something, tuple1][something, tuple2][something, tuple3]
  • 标题具有误导性,因为仅根据标题,答案将是 result.extend(item)

标签: python


【解决方案1】:
result.extend(item)

【讨论】:

  • 漂亮,不知道 extend 会以正确的方式处理元组。
  • @John: list.extend() 接受任何可迭代对象。
  • result += item 会按照this question 工作吗?
【解决方案2】:

您可以使用内置的list() 函数将元组转换为列表。所以一个更简单的版本是:

l = [('AAAA', 1.11), ('BBB', 2.22), ('CCCC', 3.33)]
result = [list(t) for t in l]
print result

输出:

[['AAAA', 1.1100000000000001],
 ['BBB', 2.2200000000000002],
 ['CCCC', 3.3300000000000001]]

【讨论】:

  • 为什么会得到:TypeError: 'tuple' object is not callable?
  • @DGT 不知道。你用的是什么版本的python?以上在 2.6/2.7 中都很好。
  • @DGT:您可能在元组后面省略了逗号。像 (a, b, c) (d, e, f) 这样的东西会产生这个错误。固定版本是 (a, b, c), (d, e, f)
【解决方案3】:

您需要解压缩元组以附加其各个元素。像这样:

l = [('AAAA', 1.11), ('BBB', 2.22), ('CCCC', 3.33)]

for each_tuple in l:
  result = ['something']
  for each_item in each_tuple:
    result.append(each_item)
    print result

你会得到这个:

['something', 'AAAA', 1.1100000000000001]
['something', 'BBB', 2.2200000000000002]
['something', 'CCCC', 3.3300000000000001]

您需要对数值进行一些处理才能正确显示,但这将是另一个问题。

【讨论】:

  • 不,不是这个。但这是唯一一个至少能把问题读到最后的人。
【解决方案4】:

您可以轻松地将元组转换为列表:

>>> t = ('AAA', 1.11)
>>> list(t)
['AAAA', 1.11]

然后你可以用extend连接列表:

>>> t = ('AAA', 1.11)
>>> result = ['something']
>>> result.extend(list(t))
['something', 'AAA', 1.11])

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-12-24
    • 2013-12-23
    • 2017-06-23
    • 2018-11-30
    • 2017-11-19
    相关资源
    最近更新 更多