为什么元素不在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
当我使用索引来寻址元素时,也会发生同样的情况。
字符串是不可变的对象,也就是说,您不能更改它,而是创建新的字符串。这意味着当您追加到字符串时,原始字符串保持不变。一个简单的解决方案是列表理解,以创建新字符串的新列表:
>>> [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()
的使用,这是进行检查的好方法。
字符串在Python中是不可变的。 c_dir += '\\'
创建一个附加了\\
的新字符串,但不替换原始字符串。
strings
在Python中是不可变的,您不能那样更改它们的内容。这行中发生的事情是:
c_dir += '\\'
局部变量c_dir
被新的字符串替换(附加\\
)。当您离开循环迭代时,此新字符串将丢失。