#python #list
#python #Список
Вопрос:
У меня есть список с 7 элементами внутри, как ['S1','S1','S1','S1','L','L','L']
и я хочу ограничить 'L'
только 2 раза, а остальные — 'S1'
.
Комментарии:
1. Что вы подразумеваете под ограничением? вам нужен новый список, который встречается только
L
2 раза?2. Это описание немного расплывчатое, не могли бы вы уточнить?
3. @DirtyBit именно этого я и хочу, проверяя фактический список, если в нем больше 2 L в списке, если больше 2, создайте новый список, содержащий только 2 L, а остальные должны быть S1
4. Неясно: вы хотите удалить все, кроме первых двух
L
, или вы хотите заменить их на другиеS1
?
Ответ №1:
Использование счетчика для подсчета вхождений L
элемента в список и добавления соответствующим образом:
s = ['S1','S1','S1','S1','L','L','L']
c = 0
res = []
for el in s:
if el != 'L':
res.append(el)
elif c < 2:
c = 1
res.append(el)
print(res)
ВЫВОД:
['S1', 'S1', 'S1', 'S1', 'L', 'L']
Редактировать:
если вы хотите заменить остальную часть L
на S1
:
s = ['S1','S1','S1','S1','L','L','L']
c = 0
res = []
for el in s:
if el != 'L':
res.append(el)
else:
if c < 2:
c = 1
res.append(el)
else:
res.append("S1")
print(res)
ВЫВОД:
['S1', 'S1', 'S1', 'S1', 'L', 'L', 'S1']
Ответ №2:
Попробуйте:
lst = ["S1","S1","S1","S1","L","L","L"]
limit = 2
value = "L"
new_lst = []
counter = 0
for i in lst:
if counter == limit and i == value:
continue
if i == value:
counter = 1
new_lst.append(i)
print(new_lst)