s[:] = reversed(s) 和 s = reversed(s)的区别
注意s 和 t是指针 其中储存的列表才是真实的,第一种一开始s和t都指向初始列表,后来s指向一个新的反转列表了。第二种是s t 都指向初始列表 然后 初始列表反转了 s t 指向这个发生反转的列表了
s = reversed(s)
这只是给变量
s
重新赋值。它并没有修改原来的列表对象,而是创建了一个新的迭代器(
reversed
返回的是迭代器)。外部引用原列表的地方不会改变。
s = ["h","e","l","l","o"]
t = s # t 引用同一个列表
s = reversed(s) # s 现在指向一个新的迭代器
print(list(s)) # ['o','l','l','e','h']
print(t) # ['h','e','l','l','o'] 原列表没有变化
s[:] = reversed(s)
s[:]
表示 列表的全部切片,相当于对原列表的内容进行替换。这样可以 原地修改列表,保证外部引用也能看到变化。
s = ["h","e","l","l","o"]
t = s
s[:] = reversed(s) # 原地修改列表
print(list(s)) # ['o','l','l','e','h']
print(t) # ['o','l','l','e','h'] t 也变化了