1

为什么在 for 循环中不更新元素?这让我

met_dir = r'D:\09052012\run\fout'
out_dir = r'D:\inpassingstest\test_cmd'

for c_dir in [met_dir,out_dir]:
    if c_dir[-1:] != '\\':
       c_dir += '\\'
       print c_dir
print met_dir

>>>D:\09052012\run\fout\
>>>D:\inpassingstest\test_cmd\
>>>D:\09052012\run\fout

当我使用索引来寻址元素时也会发生同样的情况。

4

3 回答 3

4

字符串是不可变的对象,也就是说,您不能更改它,而是创建新的字符串。这意味着当您附加到字符串时,原始内容保持不变。对此的简单解决方案是列表推导,以创建新字符串的新列表:

>>> [c_dir + "\\" if not c_dir.endswith("\\") else c_dir for c_dir in (met_dir, out_dir)]
['D:\\09052012\\run\\fout\\', 'D:\\inpassingstest\\test_cmd\\']

哪一个可以轻松解压缩成值:

met_dir, out_dir = [...]

请注意,我使用str.endswith()它是一种很好的检查方式。

于 2012-10-25T12:29:27.693 回答
2

字符串在 Python 中是不可变的。c_dir += '\\'创建一个\\附加的新字符串,但不替换原始字符串。

于 2012-10-25T12:28:12.000 回答
2

strings在 Python 中是不可变的,你不能像那样改变它们的内容。在这一行中会发生什么:

c_dir += '\\'

局部变量c_dir被替换为新字符串(\\附加)。当您离开循环迭代时,这个新字符串会丢失。

于 2012-10-25T12:28:55.447 回答