泛舟湖上清波郎朗
由于下面的循环只修改了已经看到的元素,因此可接受:a = ['a',' b', 'c ', ' d ']for i, s in enumerate(a): a[i] = s.strip()print(a) # -> ['a', 'b', 'c', 'd']它不同于:a[:] = [s.strip() for s in a]因为它不需要创建临时列表并分配它来替换原来的列表,尽管它确实需要更多的索引操作。警告:尽管你可以修改条目时,不能更改list不会冒着遇到问题的危险。下面是我的一个例子-删除一个条目的混乱-从这个点开始索引:b = ['a', ' b', 'c ', ' d ']for i, s in enumerate(b): if s.strip() != b[i]: # leading or trailing whitespace? del b[i]print(b) # -> ['a', 'c '] # WRONG!(结果是错误的,因为它没有删除它应该拥有的所有项。)更新由于这是一个相当流行的答案,下面是如何有效地删除“就地”条目(尽管这并不是问题所在):b = ['a',' b', 'c ', ' d ']b[:] = [entry for entry in b if entry.strip() == entry]print(b) # -> ['a'] # CORRECT