Python中是否存在不修改原List、返回新对象的方法?
Python中不修改原List、返回新对象的方法
当然有,Python里有多种方式可以实现不修改原列表、返回新列表对象的操作,对应你提到的JavaScript concat 方法,这里列举几种常用的:
列表拼接运算符(+):这是最接近JS
concat的用法,直接将原列表与新元素/列表拼接,返回全新列表,原列表完全不受影响。original_list = [1, 2, 3] new_list = original_list + [4] # 返回 [1, 2, 3, 4] # 原列表仍为 [1, 2, 3]解包语法(*):可以更简洁地扩展原列表并生成新列表,同样不修改原列表:
original_list = [1, 2, 3] new_list = [*original_list, 4, 5] # 返回 [1, 2, 3, 4, 5]列表推导式:如果需要对原列表元素做处理后生成新列表,或者过滤元素,列表推导式是绝佳选择,原列表保持不变:
original_list = [1, 2, 3] # 生成包含原元素并添加新元素的新列表 new_list = [x for x in original_list] + [4] # 或者对元素做转换后生成新列表 doubled_list = [x * 2 for x in original_list] # 返回 [2, 4, 6],原列表不变list.copy()结合拼接:先复制原列表得到一个新对象,再通过拼接添加元素(注意不要用append,因为会修改复制后的列表):original_list = [1, 2, 3] new_list = original_list.copy() + [4]
需要注意的是,Python中的list.append()、list.extend()、list.insert()这些方法都是直接修改原列表,不会返回新对象,和你要的场景相反。
内容的提问来源于stack exchange,提问作者kubaSpolsky
相关产品推荐
相关产品推荐

