gpt4 book ai didi

python - 就地更新列表

转载 作者:行者123 更新时间:2023-11-28 16:38:55 26 4
gpt4 key购买 nike

我有一个字符串列表,其中一些以换行符结尾。我想通过从以它结尾的字符串中删除\n 来修改此列表。为此,我使用以下代码:

aList = ['qwerttyy\n', '123454\n', 'zxcv']

for s in aList:
if s.endswith('\n'):
s = s[: -1]
print(s)

输出如下:

    qwerttyy    123454    >>> aList    ['qwerttyy\n', '123454\n', 'zxcv']

虽然列表是可变对象,但原始列表没有改变。这种行为的原因是什么?

最佳答案

您可以使用切片赋值和列表理解:

>>> foo = aList = ['qwerttyy\n', '123454\n', 'zxcv']
>>> aList[:] = [s[:-1] if s.endswith('\n') else s for s in aList]
>>> foo #All references are affected.
['qwerttyy', '123454', 'zxcv']
>>> aList
['qwerttyy', '123454', 'zxcv']

您的代码无效,因为它等同于:

s = aList[0]
if s.endswith('\n'):
s = s[: -1]
s = aList[1]
if s.endswith('\n'):
s = s[: -1]
...

即您正在更新变量 s,而不是实际的列表项

关于python - 就地更新列表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22093706/

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