Как вывести список с одним кортежем из трёх, в котором список состоит из чётных чисел?

Имеется список с кортежами, блэкджеком и... числами
l = [("a", [1, 3, 5, 6, 7]), ("b", [1, 2, 3, 4, 5]), ("c", [2, 4, 6, 8])]

Как наиболее правильно написать так, чтобы вывел список с тем кортежем, в котором список состоит из четных чисел?
[("c", [2, 4, 6, 8])]

На изи можно написать такой страшный цикл:
for i in range(len(l)):
    for k in range(len(l[i][1])):
        if l[i][1][k] % 2 != 0:
            break
        else:
            if k == len(l[i][1]) - 1:
                l = [l[i]]
                print(l)

Это, конечно же, никуда не годится, лишь на задачки на CodeWars xD
Как можно правильно, красиво, быстро с использованием вложенных списков, лямбды?
Help..
Уже 5-ый час голову ломаю :\
  • Вопрос задан
  • 90 просмотров
Решения вопроса 2
MinTnt
@MinTnt
Если имеется ввиду, чтоб все элементы были чётными, то мб что-то по типу..

l = [("a", [1, 3, 5, 6, 7]), ("b", [1, 2, 3, 4, 5]), ("c", [2, 4, 6, 8])]

def func(l):
	for x in l:
		if all(not i%2 for i in x[1]):
			return x

print(func(l))
Ответ написан
Fepler
@Fepler Автор вопроса
Вот он нужный ответ, спасибо MinTnt :3
l = [("a", [1, 3, 5, 6, 7]), ("b", [1, 2, 3, 4, 5]), ("c", [2, 4, 6, 8])]

print([x for x in l if all(not i % 2 for i in x[1])])
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 2
hottabxp
@hottabxp Куратор тега Python
Сначала мы жили бедно, а потом нас обокрали..
for x in l:
	if len(x[1]) %2 ==0:
		print(x)
или:
s = [x for x in l if len(x[1]) %2 == 0 ]
print(s)
Ответ написан
Комментировать
@aromensky
Я всегда пишу плохой код, но я бы сделал так.
l = [("a", [1, 3, 5, 6, 7]), ("b", [1, 2, 3, 4, 5]), ("c", [2, 4, 6, 8]), ("g", [2, 3, 6, 8])]
A = []

for SAS in l:
    Q = True
    for SUS in SAS[1]:
        if SUS % 2 != 0:
            Q = False
            break
    if Q == True:
        A.append(SAS[0])

print(A)
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы