Я создал три списка целых чисел (a, b и c), и они могут содержать или не содержать никаких значений.Я хочу создать новый список (newList) на основе этих существующих списков:
- Если все три списка содержат значения, я хочу заполнить newList только значениями, общими для каждого списка (например,= [1,2,3], b = [2,3,4], c = [3,4,5], затем newList = [3])
- Если все списки пусты, яхочу, чтобы newList также был пустым (например, a = [], b = [], c = [], затем newList = [])
- Если один или два из списков пусты, я хочу заполнить newList с помощьюзначения, которые разделяют непустые списки (например, a = [], b = [2,3,4], c = [3,4,5], затем newList = [3,4]
Что я нахожу хитрым, так это то, что любой или ни один из списков не может быть пустым, что означает, что мне в настоящее время приходится дублировать мой код в различных операторах if.
Ниже я попробовал, ноэто выглядит действительно неэффективно.
a = [1,2,3]
b = [2,3,4]
c = [3,4,5]
newList = []
if len(a) + len(b) + len(c) != 0:
if len(a) > 0:
if len(b) > 0:
if len(c) > 0:
#a, b and c all contain values, find common values
newList = list(set(a) & set(b) & set(c))
else:
#a and b contain values, c is empty. Find common values in a and b.
newList = list(set(a) & set(b))
else:
if len(c) > 0:
#a and c contain values, b is empty. Find common values in a and c.
newList = list(set(a) & set(c))
else
#only a contains values. b and c are empty.
newList = a
else:
if len(b) > 0:
if len(c) > 0:
#b and c contain values, a is empty. Find common values in b and c.
newList = list(set(b) & set(c))
else:
#only b contains values. a and c are empty
newList = b
else len(c > 0:
#only c contains values. a and b are empty
newList = c
else:
#no lists contain values, leave newList as empty
Буду очень признателен, если у кого-нибудь появятся какие-либо улучшения, заранее спасибо.