gpt4 book ai didi

python - 为什么在这个列表推导中需要这个列表切片?

转载 作者:太空宇宙 更新时间:2023-11-03 13:54:49 25 4
gpt4 key购买 nike

我有一个嵌套列表,我想创建一个函数将时间(具有特定格式“XX:XX”)转换为字符串“time”。我很好奇为什么我的第一个示例有效但第二个示例无效。为什么我必须为每一列克隆以保存列表组件的结果?列表是可变的,所以我不能只保存行的结果吗?

不起作用

def timeConvert2(schedule):
for eachClass in schedule:
eachClass = ["time" if x[2] == ':' else x for x in eachClass]
return schedule

timeConvert([["abc", "09:09", "10:10"], ["def", "11:11", "12:12"]])

=> [["abc", "09:09", "10:10"], ["def", "11:11", "12:12"]]

作品

def timeConvert1(schedule):
for eachClass in schedule:
eachClass[:] = ["time" if x[2] == ':' else x for x in eachClass]
return schedule

timeConvert([["abc", "09:09", "10:10"], ["def", "11:11", "12:12"]])

=> [["abc", "time", "time"], ["def", "time", "time"]]

我期待我给出的第一个例子起作用,但原始列表没有改变......

最佳答案

在第一个版本中,您创建了一个新列表并将每个类更改为指向新列表。您不会更改任何计划,因为它仍然包含指向旧列表的指针。

在第二个版本中,您使用切片赋值。这会导致旧列表的内容被新列表的内容替换。

你应该检查这个 question这解释了切片分配的工作原理。

关于python - 为什么在这个列表推导中需要这个列表切片?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58042983/

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