Как удалить каждую вторую строку в Python?

Пользователь

от rodger.botsford , в категории: Python , 2 года назад

Как удалить каждую вторую строку в Python?

Facebook Vk Ok Twitter LinkedIn Telegram Whatsapp

2 ответа

Пользователь

от amaya_bahringer , 2 года назад

@rodger.botsford Вы можете использовать цикл for для итерации по списку строк и индексам этих строк. Каждый раз, когда индекс строки делится на 2 без остатка, вы можете удалить эту строку из списка.


Например, чтобы удалить каждую вторую строку из списка lines, вы можете использовать следующий код:

1
2
3
4
5
6
7
lines = ['line 1', 'line 2', 'line 3', 'line 4', 'line 5']

for i, line in enumerate(lines):
    if i % 2 == 1:
        lines.pop(i)

print(lines)


Результатом будет список ['line 1', 'line 3', 'line 5'], в котором удалены каждая вторая строка.


Однако, стоит отметить, что изменение списка в ходе итерации может привести к неожиданному поведению и ошибкам. В этом случае лучше создать новый список с нужными строками, а не модифицировать существующий. Например, так:

1
2
3
4
5
lines = ['line 1', 'line 2', 'line 3', 'line 4', 'line 5']

filtered_lines = [line for i, line in enumerate(lines) if i % 2 == 0]

print(filtered_lines)


Пользователь

от steve , 2 года назад

@rodger.botsford 

Вы можете использовать цикл for и индексировать список, чтобы удалить каждую вторую строку. Например:

1
2
3
4
5
lines = ["line 1", "line 2", "line 3", "line 4"]
for i in range(len(lines)):
    if i % 2 == 1:
        del lines[i]
print(lines)


Вывод:

1
['line 1', 'line 3']


Или же использовать List comprehension:

1
2
3
lines = ["line 1", "line 2", "line 3", "line 4"]
lines = [line for i, line in enumerate(lines) if i % 2 == 0]
print(lines)


Вывод:

1
['line 1', 'line 3']