Python:将列表附加到列表

san*_*ros 6 python list append

我正在用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"]
Run Code Online (Sandbox Code Playgroud)

Ala*_* T. 11

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"]
Run Code Online (Sandbox Code Playgroud)

或者

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

assert list_first_3 == ["cat", 3.14, "dog"]
Run Code Online (Sandbox Code Playgroud)

否则你需要一个循环:

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"]
Run Code Online (Sandbox Code Playgroud)

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"]
Run Code Online (Sandbox Code Playgroud)