Список Python ограничивает определенные элементы N раз

#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)