por exemplo
list = [[1,2,3], [4,5,6,3], [3,7,8,9,10,11,12]]
Eu gostaria de excluir todas as ocorrências do número 3. A nova lista deve ser:
[[1, 2], [4, 5, 6], [7, 8, 9, 10, 11, 12]]
Para listas irregulares e mais complicadas:
def delete_threes(l):
nl = []
for s in l:
if isinstance(s, list):
nl.append(delete_threes(s))
elif s != 3:
nl.append(s)
return nl
Acima está uma função recursiva que é capaz de remover instâncias de 3
de uma lista com uma forma irregular.
Primeiro, iteramos pela lista e verificamos se o elemento é uma sublista ou outro tipo. Se for uma lista, precisamos excluir recursivamente os 3
da lista também. É daí que nl.append(delete_threes(s))
vem o. Essencialmente, isso passa a sublista para a função novamente e, em seguida, acrescenta a lista resultante com os 3
removidos à nova lista nl
,.
Você pode fazer isso com uma linha usando uma compreensão de lista:
l = [[1,2,3], [4,5,6,3], [3,7,8,9,10,11,12]]
filtered_l = [[i for i in sub if i != 3] for sub in l]
Resultado:
[[1, 2], [4, 5, 6], [7, 8, 9, 10, 11, 12]]
Se você não quer um one-liner, você pode ir para este bastante feio for-loop
:
filtered_l = []
for sub in l:
filtered_sub = []
for i in sub:
if i != 3:
filtered_sub.append(i)
filtered_l.append(filtered_sub)
Outra observação: em sua pergunta, você define a variável chamada list
. Não é recomendável nomear suas variáveis / classes / funções da mesma forma que integradas, pois isso pode causar código ilegível e muitas dores de cabeça após rastrear os bugs que isso causa. Escolha algo mais simples, como nums_list
ou apenas l
!
Este artigo é coletado da Internet.
Se houver alguma infração, entre em [email protected] Delete.
deixe-me dizer algumas palavras