Выполнение действий при переборе списка - PullRequest
1 голос
/ 20 июня 2020

Я перебираю список

xxx
yyy
**start word**
xxx
yyy
zzz
**stop word** 
break

Мне нужно добавить в другой список все данные между начальным и стоп-словами, как мне это сделать?

Появляется стоп-слово пару раз в списке. Поэтому добавление должно быть остановлено, когда l oop найдет первое стоп-слово на своем пути.

Например:

list = [1,2,3 ... 1000]
new_list = []
for i in list:
    # Once i = 5 I need to start appending i values to new_list until i = 25.

Ответы [ 2 ]

2 голосов
/ 20 июня 2020

Вы можете поддерживать логическое значение, чтобы указать, когда начинать добавление, а когда прекращать. Для этого вы можете написать свой код примерно так -

old_list = ['axz','bbbdd','ccc','start','Hello World','Bye','end','ezy','foo']
another_list=[]

append_to_list = False     # Boolean to indicate if we should append current element
start_word = 'start'
end_word = 'end'
for element in old_list:
    if element == end_word :
        append_to_list = False
    if append_to_list :    # Appending to list if the Boolean is set
        another_list.append(element)
    if element == start_word :
        append_to_list = True


print(another_list)
    

Вывод:

['Hello World', 'Bye']

Здесь start и end - начало и стоп-слова, вы можете изменить их в соответствии с начальным и стоп-словами программы.

Другим возможным решением было бы получить индекс ваших начальных и стоп-слов и просто сохранить элементы между этими индексами в вашем another_list следующим образом -

old_list = ['axz','bbbdd','ccc','start','Hello World','Bye','end','ezy','foo']

start_idx = old_list .index("start")
stop_idx = old_list .index("end")

another_list = old_list[start_idx+1:stop_idx]

print(another_list)
    

Вывод:

['Hello World', 'Bye']

Надеюсь, это поможет!

1 голос
/ 20 июня 2020

Было бы здорово получить больше информации, но исходя из того, что вы предоставили, вы можете использовать индекс ваших слов «начало» и «конец» для добавления в новый список:

list1 = ["xxx", "yyy", "start_word", "xxx", "yyy", "zzz", "end_word"]

a = list1.index("start_word")
b = list1.index("end_word")

list2 = []
list2.append(list1[a:b])

print(list2)

Вывод:

[['start_word', 'xxx', 'yyy', 'zzz']]
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...