@immelnikoff
Изучаю БД

Как наложить два списка?

Есть два списка:
d1 = [1, 0, 1, 0]
d2 = ['qwe', 'asd', 'zxc', 'wer']

Нужно получить список путем "наложения" данных списков, то есть в третьем списке должны остаться только те элементы из списка d2, для которых в списке d1 на соответствующих позициях стоит 1:
d3 = ['qwe', 'zxc']
Как это сделать наиболее естественным способом?
  • Вопрос задан
  • 202 просмотра
Решения вопроса 4
aRegius
@aRegius
Python Enthusiast
itertools.compress

d3 = list(compress(d2, d1))
Ответ написан
Комментировать
shurshur
@shurshur
Сисадмин, просто сисадмин...
d1 = [1, 0, 1, 0]
d2 = ['qwe', 'asd', 'zxc', 'wer']

d3 = [x[1] for x in filter(lambda x:x[0] == 1, zip(d1, d2))]

print (d3)


Ещё короче:

d3 = [d2[i] for i in range(0,len(d1)) if d1[i] == 1]
Ответ написан
phaggi
@phaggi Куратор тега Python
лужу, паяю, ЭВМы починяю
d1 = [1, 0, 1, 0]
d2 = ['qwe', 'asd', 'zxc', 'wer']
print([d2[i] for i, _ in enumerate(d2) if d1[i]])
Ответ написан
@Drill
d3 = [i2 for i1,i2 in zip(d1,d2) if i1]
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

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

Похожие вопросы