Я имею дело со списком строк. Я хочу найти список для данного элемента, и если он найден, я хочу вернуть фрагмент списка, который идет от n индексов до n индексов после найденного элемента.
str_list = ['str1','str2','str3','str4','str5','str6','str7','str8']
for i in str_list:
for elem in str_list:
if '5' in elem:
print(elem in range(str_list[i-2:i+3]))
#expected output
['str3','str4','str5','str6','str7']
1
Camilla
23 Окт 2018 в 18:55
2 ответа
Лучший ответ
Попробуй это:
str_list = ['str1','str2','str3','str4','str5','str6','str7','str8']
for c,i in enumerate(str_list):
if '5' in i:
new = str_list[c-2:c+3]
In [1068]: new
Out[1068]: ['str3', 'str4', 'str5', 'str6', 'str7']
1
Mayank Porwal
23 Ноя 2018 в 07:16
Вы можете enumerate
просмотреть список и просмотреть его, получив срез, сосредоточенный на каждом элементе, который соответствует вашему условию:
def slices(sequence, radius, condition):
for i, x in enumerate(sequence):
if condition(x):
begin = i - radius
begin = 0 if begin < 0 else begin
end = i+radius+1
yield sequence[begin:end]
print(list(slices(str_list, 2, lambda s: '5' in s)))
# [['str3', 'str4', 'str5', 'str6', 'str7']]
0
Patrick Haugh
23 Окт 2018 в 16:15
Похожие вопросы
Новые вопросы
python-3.x
По вопросам программирования Python, относящегося к версии языка 3+. Используйте более общий тег [python] для всех вопросов Python и добавляйте его только в том случае, если ваш вопрос зависит от версии. Используйте теги [python-2.x] для вопросов Python 2.