向空元组追加元素时如何保留原括号结构避免扁平化
你当前代码的问题在于:使用元组的+=操作时,会将右侧可迭代对象的元素逐个追加到原元组中,l[0]本身就是长度为2的元组,所以会把0、1两个元素分别加入,导致最后结果被扁平化。
以下是两种可实现目标的常用方案:
方案1:直接使用列表存储(最简便)
你需要的结果本身是列表格式,直接初始化列表后追加对应元素即可:
l = [(0,1), (4,5), (7,10) ] res = [] res.append(l[0]) res.append(l[2])
运行后res的值就是[(0, 1), (7, 10)]。
方案2:先操作元组再转列表
如果要保留先操作元组的逻辑,拼接时需要把单个元素包裹成长度为1的元组(末尾加逗号标识),避免被扁平化:
l = [(0,1), (4,5), (7,10) ] res = () # 注意(l[0],)末尾的逗号,用于标识这是单元素元组 res += (l[0],) res += (l[2],) # 最后转为列表 res = list(res)
运行后同样能得到目标结果。
内容的提问来源于stack exchange,提问作者mle0312
相关产品推荐
相关产品推荐

