python strip并不适用于" for-in"

时间:2017-10-16 11:17:10

标签: python

情形1

for str in list1:
    str = str.strip()

情形2

for i in range(0, len(list1)):
    list1[i] = list1[i].strip()

在case1中,strip不起作用。

在case2中,strip工作。

1和2之间有什么区别?

2 个答案:

答案 0 :(得分:1)

str = str.strip()是本地循环变量str的重新分配。列表引用的任何字符串对象将保持不变。字符串在Python中是不可变的。如果您希望字符串变量引用不同的字符串,则必须重新分配它们!

你的第一个循环大致相当于:

for i in range(0, len(list1)):
    s = list1[i]  # do not shadow the built-in str
    s = s.strip()

这应该让列表更加清晰,为什么会更清楚。

答案 1 :(得分:0)

你可以将python默认关键字作为变量名称