Jes*_*eTG 3 python arrays list flatten multidimensional-array
所以我正在用Python编写一个游戏,而我正在尝试解决的问题要求我将2D列表(即列表列表)转换为一维列表.我已经看到了几种方法,但我不知道是否有任何方法可以创建其中包含的任何对象的副本,或者只是新引用.说实话,Python标准库让我感到困惑,因为对象/序列是否被复制或者只是被引用填充并不总是显而易见的.
这些是关于我的特殊情况的假设;
谢谢!
虽然我不能说出你可能看到过的各种方式,但由于Python的对象语义,通常不会有任何副本.
>>> a = [[1,2.3,'3', object()], [None, [2,3], 4j]]
>>> b = [v for row in a for v in row]
>>> a
[[1, 2.3, '3', <object object at 0x1002af090>], [None, [2, 3], 4j]]
>>> b
[1, 2.3, '3', <object object at 0x1002af090>, None, [2, 3], 4j]
>>> [id(obj) for row in a for obj in row]
[4298185464, 4298195480, 4299558664, 4297781392, 4296523616, 4299692656, 4297773296]
>>> [id(obj) for obj in b]
[4298185464, 4298195480, 4299558664, 4297781392, 4296523616, 4299692656, 4297773296]
Run Code Online (Sandbox Code Playgroud)
这v并不意味着"一些新的对象等于v",它只是意味着v,对象本身.
| 归档时间: |
|
| 查看次数: |
517 次 |
| 最近记录: |