You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何仅获取数组当前值而非引用?Python数组赋值问题咨询

问题解答

一、让原列表x保持不变的简洁方法

你用逐个赋值的方法能达到效果,但Python里有更省事的列表复制方式,不用手动挨个赋值:

方法1:切片语法

x = [1, 2, 3]
y = x[:]  # 用切片创建整个列表的副本
y.append(4)
print(x)  # 输出 [1, 2, 3]

方法2:list()构造函数

x = [1, 2, 3]
y = list(x)  # 基于原列表生成新列表
y.append(4)
print(x)  # 输出 [1, 2, 3]

方法3:copy()方法(Python3.3及以上可用)

x = [1, 2, 3]
y = x.copy()  # 调用列表自带的copy方法生成副本
y.append(4)
print(x)  # 输出 [1, 2, 3]

这些方法都是创建原列表的浅拷贝,对于像整数这种不可变元素组成的列表完全够用,比手动赋值高效多了。

二、获取列表的当前值(而非函数引用)

看你给的代码:

x = [foo(), bar(), someOtherChangingNumber(), datetime.now()]

其实这里的x已经存的是函数执行后的当前值了,因为foo()、bar()这种带括号的写法会直接执行函数,把返回结果放进列表。如果你的实际场景是列表里存的是函数对象(比如x = [foo, bar, ...],不带括号),要拿到它们的当前执行值,直接遍历列表调用每个函数就行:

# 假设x里存的是函数对象
x = [foo, bar, someOtherChangingNumber, datetime.now]
y = [func() for func in x]  # 遍历调用每个函数,获取当前值
print(y)

要是你想保存x当前的元素快照,防止后续x的元素被修改影响到y,同样用前面说的列表拷贝方法就行,比如y = x.copy()或者y = x[:],这样y就会固定住赋值那一刻x的所有元素值。

内容的提问来源于stack exchange,提问作者blazgocompany

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.17 23:51:06