#python #arrays #list #zip
#python #массивы #Список #zip
Вопрос:
Когда у меня есть два списка:
list1 = ['course1', 'course2', 'course3', 'course4', 'course5']
list2 = [12, 3, 3, 4, 5]
Я хочу заархивировать элементы индексного списка вместе только в том случае, если выполнено условие. В противном случае для элемента индекса списка: 0.
Комментарии:
1. Заархивируйте все, затем отфильтруйте.
2. Каков ваш ожидаемый результат?
3. В какую структуру данных вы их заархивируете? Я бы рекомендовал заархивировать их все, а затем удалить любые пары (ключ, значение), которые не соответствуют условию.
4. «Я хочу заархивировать элементы индекса только тогда, когда число> = 5.5» Что такое элементы индекса?
Ответ №1:
Я предлагаю более короткую версию, использующую понимание списка:
[x for x in zip(list1, list2) if x[1] >= 5.5]
Ответ №2:
Если вы хотите получить заархивированный список списков из list1
и list2
с условием, что элемент из list2
должен быть >=5.5
, попробуйте это :
list3 = [[i,j] for i,j in zip(list1, list2) if j>=5.5]
ВЫВОД :
[['course1', 12]]
Ответ №3:
Забудьте о zip и создайте свое собственное решение:
list1 = ['course1', 'course2', 'course3', 'course4', 'course5']
list2 = [12, 3, 3, 4, 5]
def zip_condition(list_a, list_b, func):
iter_a = iter(list_a)
iter_b = iter(list_b)
while 1:
try:
a, b = next(iter_a), next(iter_b)
except StopIteration:
return
if func((a, b)):
yield (a, b)
result = list(zip_condition(list1, list2, lambda x: x[1] >= 5.5))
print(result)
Ответ №4:
Архивирование с помощью map()
:
list1 = ['course1', 'course2', 'course3', 'course4', 'course5']
list2 = [12, 3, 3, 4, 5]
m = map(lambda x, y: (x, y) if y > 5.5 else None, list1, list2)
list(filter(None.__ne__, m))
# [('course1', 12)]