Python: элементы списка не изменены в цикле for
Я был шокирован, когда следующий код не сделал того, чего я ожидал:
lines_list = ['this is line 1\n', 'this is line 2\n', 'this is line 3\n']
for line in lines_list:
line = line.strip()
Я, конечно, ожидал, что каждый элемент в списке станет"stripped"
в этом случае быть свободным от конечного'\n'
Чар, но это не так ...
print lines_list
Выход:
['this is line 1\n', 'this is line 2\n', 'this is line 3\n']
Итак, как вы можете догадаться, мой вопрос заключается в том, есть ли элегантный способ изменить элементы списка во времяfor
цикл? Я не хочу дублировать список ...
РЕДАКТИРОВАТЬ:
Я хотел бы упомянуть, что, кстати, вPerl или вДжава, мое использование работает хорошо. Python - это уникальное поведение
В Java это будет работать:
String[] lines = {"this is line 1\n", "this is line 2\n", "this is line 3\n"};
for (String line : lines) {
line = line.trim();
}
В Perl это будет работать:
my @lines = ("this is line 1\n", "this is line 2\n", "this is line 3\n");
foreach my $line (@lines) {
$line =~ s/\s+$//;
$line =~ s/^\s+//;
}