Python使用append方法添加列表切片出现双层括号如何解决
问题原因
append()方法的逻辑是将传入的参数整体作为单个元素追加到列表末尾,你传入的list[:3]本身就是包含"cat"、3.14、"dog"三个元素的子列表,所以会被当成一个元素塞进空列表,最终得到嵌套结构[['cat', 3.14, 'dog']],和断言要求的一维列表不匹配。
补充两个列表追加方法的核心区别:
append(x):把x当做单个元素插入列表,无论x是什么数据类型extend(iterable):迭代遍历传入的可迭代对象,把里面的每个元素逐个插入列表
解决方法
方案1:用extend()直接替换append()(最简便)
# 注意不要用list作为变量名,这是Python内置列表类型的关键字,覆盖会引发未知问题 list_val = ["cat", 3.14, "dog", 81, 6, 41] list_first_3 = [] list_first_3.extend(list_val[:3]) assert list_first_3 == ["cat", 3.14, "dog"]
方案2:必须使用append()的实现方式
如果需求要求只能用append()方法完成,可以遍历前三个元素逐个追加:
list_val = ["cat", 3.14, "dog", 81, 6, 41] list_first_3 = [] for item in list_val[:3]: list_first_3.append(item) assert list_first_3 == ["cat", 3.14, "dog"]
内容的提问来源于stack exchange,提问作者santoros
相关产品推荐
相关产品推荐

