gpt4 book ai didi

python - 在嵌套 python 列表的外部维度上使用切片赋值时出现意外结果

转载 作者:行者123 更新时间:2023-11-28 20:56:57 25 4
gpt4 key购买 nike

在 python 3.7.2 中使用以下代码时,分配将被静默忽略。这是预期的结果吗?

>>> x = [[1, 2, 3], [4, 5, 6], [7, 8, 9]]
>>> x
[[1, 2, 3], [4, 5, 6], [7, 8, 9]]
>>> x[:][1]=17
>>> x
[[1, 2, 3], [4, 5, 6], [7, 8, 9]]

是否有更好的方法使用切片来实现将第 2 列替换为 17 的预期结果?顺便说一句,我在使用 [17, 17, 17] 匹配维度时得到相同的结果。

编辑:只是为了避免一些混淆。预期结果是 [[1, 17, 3], [4, 17, 6], [7, 17, 9]]。

最佳答案

x[:] 创建原始列表的副本,并在适当位置修改新列表。
但是,这个创建的列表是不可访问的(因为没有对它的引用)。如果您想将第二个子列表作为 [17,17,17]x[0] = [17 for _ in x[0]]

但如果您希望它只是[17],那么x[0] = [17]

编辑:好的,看来我有点误解了这个问题,看来你想将其视为一种矩阵。对于常规的 Python 列表和嵌套列表,没有这样的语法糖,您必须创建一个 for 循环:

for sublist in x:
sublist[1] = 17

对于列表理解,您需要创建一个副本,IMO 首先不需要这样做。但是如果你想要那个

copied_and_modified_x = [[sublist[0], 17, sublist[2]] for sublist in x]

关于python - 在嵌套 python 列表的外部维度上使用切片赋值时出现意外结果,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53998052/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com