Как удалить элементы из списка, когда каждый символ идентичен (Python)?

#python #for-loop

#python #для-цикла

Вопрос:

 sample = ['AAAA','ABCB','CCCC','DDEF']
 

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

 output = ['ABCB','DDEF']

sample1 =[]
for i in sample:
    for j in i:
       if j == j 1:    #This needs to be corrected to if all elements in i identical to each other i.e. if all "j's" are the same
        sample1.pop(i)
 

распечатать образец

Ответ №1:

  sample = ['AAAA','ABCB','CCCC','DDEF']
 output = [sublist for sublist in sample if len(set(sublist)) > 1]
 

ОТРЕДАКТИРУЙТЕ, чтобы ответить на комментарий.

 sample = [['CGG', 'ATT'], ['ATT', 'CCC']]
output = []
for sublist in sample:
    if all([len(set(each)) > 1 for each in sublist]):
        output.append(sublist)

# List comprehension (doing the same job as the code above)
output2 = [sublist for sublist in sample if 
           all((len(set(each)) > 1 for each in sublist))]
 

Комментарии:

1. Мне нужна была помощь с расширением этой проблемы. Если бы у меня был список списков.. [[‘CGG’, ‘ATT’], [‘ATT’, ‘CCC’]], как я могу исключить пары, где одна из пар содержит все идентичные элементы? Итак, здесь вывод будет [[‘CGG’, ‘ATT’]]

2. Говоря «все одинаковые», вы имеете в виду, что хотите удалить [‘ATT’, ‘CCC’], потому что в нем есть ‘CCC’?

Ответ №2:

 sample = ['AAAA','ABCB','CCCC','DDEF']

sample1 = []
for i in sample:
    if len(set(i)) > 1:
        sample1.append(i)
 

Комментарии:

1. Мне нужна была помощь с расширением этой проблемы. Если бы у меня был список списков.. [[‘CGG’, ‘ATT’], [‘ATT’, ‘CCC’]], как я могу исключить пары, где одна из пар содержит все идентичные элементы (например, CCC)? Итак, здесь вывод будет [[‘CGG’, ‘ATT’]]