【问题标题】:Python : append a list to a listPython:将列表附加到列表
【发布时间】:2021-11-13 16:58:20
【问题描述】:

我正在用 Python 做一些练习,但遇到了一个疑问。我必须使用 .append 方法设置一个包含 list 的前三个元素的列表。问题是,我得到一个断言错误,列表不匹配。如果我打印 list_first_3 我得到“[['cat', 3.14, 'dog']]”,所以双方括号是问题所在。但是如何定义列表以使输出匹配?

list = ["cat", 3.14, "dog", 81, 6, 41]
list_first_3 = []
list_first_3.append(list[:3])

    
assert list_first_3 == ["cat", 3.14, "dog"]

【问题讨论】:

  • 使用list_first_3 = list[:3]。这会将list_first_3 的值设置为您想要的值。
  • @Henry 这在这种情况下特别适用,但通常不适用于添加。
  • 感谢您的信息,我明白了。我很困惑,因为练习的规则没有提到一个 for 循环来解决它,只是。追加
  • 还有一个非常重要的声明。你永远不应该用保留字或内置函数来命名你的变量。在此处查看获取此列表的方法:stackoverflow.com/a/22864250/2831135

标签: python list append


【解决方案1】:

将列表附加到列表时,列表成为原始列表的新项目:

list_first_3 == [["cat", 3.14, "dog"]]

您正在寻找:

list_first_3 += list[:3] # ["cat", 3.14, "dog"]

这会添加从listlist_first_3 的每一项。

此外,您不应将变量命名为像 list 这样的内置类型。

如果需要追加,可以使用 for 循环:

list_first_three = []
for item in list[:3]:
    list_first_three.append(item)

【讨论】:

  • 谢谢,我明白了。问题是,在这个练习中使用 .append 是强制性的。我想用这种方法是不可能做到的吧?
  • @santoros 看我的编辑
  • 谢谢!这就是我需要的
【解决方案2】:

您的问题是您尝试将一个列表附加到另一个列表。

list[:3] 将返回结果["cat", 3.14, "dog"] 然后,您将该结果作为一个整体并将其作为一个项目放入list_first_3。 如果你想解决这个问题,你可以这样做:

list = ["cat", 3.14, "dog", 81, 6, 41]
list_first_3 = []
list_first_3 += list[:3]

assert list_first_3 == ["cat", 3.14, "dog"] # Return True
       

如果你坚持使用append 方法:

list = ["cat", 3.14, "dog", 81, 6, 41]
list_first_3 = []

for item in list[:3]
    list_first_3.append(item)

assert list_first_3 == ["cat", 3.14, "dog"] # Return True

【讨论】:

  • 非常感谢。我不是坚持大声笑,这是练习的要求。所以唯一的方法是使用 for 循环。
【解决方案3】:

append 只能添加一个值。我想你可能想到的是扩展方法(或 += 运算符)

list1 = ["cat", 3.14, "dog", 81, 6, 41]
list_first_3 = []
list_first_3.extend(list1[:3])

assert list_first_3 == ["cat", 3.14, "dog"]

list1 = ["cat", 3.14, "dog", 81, 6, 41]
list_first_3 = []
list_first_3 += list1[:3]

assert list_first_3 == ["cat", 3.14, "dog"]

否则你需要一个循环:

list1 = ["cat", 3.14, "dog", 81, 6, 41]
list_first_3 = []
for value in list1[:3]: list_first_3.append(value) 

assert list_first_3 == ["cat", 3.14, "dog"]

使用append 但没有循环可以使用一点map() 诡计:

list1 = ["cat", 3.14, "dog", 81, 6, 41]
list_first_3 = []
any(map(list_first_3.append,list1[:3]))

assert list_first_3 == ["cat", 3.14, "dog"]

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-08-15
    • 1970-01-01
    • 2018-08-19
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多