Как распаковать и присвоить значения повторяющемуся списку

У меня есть список предметов.

my_store = [1, 2]

который я хотел бы назначить списку строк:

my_fruit = ['oranges', 'apples']

Только если my_fruit присутствует в my_basket:

my_basket = ['oranges', 'apples', 'grapes', 'bananas']

Как распаковать элементы списка в строку, если условие возвращает True

что я пробовал:

for f in my_fruit:
    if f in my_basket:
        for n in my_store:
            print("total {} is:  {}".format(f, n))
    break

что я имею:

total orange is 1
total orange is 2

вместо того:

total orange is 1
total apple is 2
0
0
24
3
Перейти к ответу Данный вопрос помечен как решенный

Ответы 3

Использование zip для итерации my_fruit и my_store

Бывший:

my_store = [1, 2]
my_fruit = ['oranges', 'apples']
my_basket = ['oranges', 'apples', 'grapes', 'bananas']


for fruit, n in zip(my_fruit, my_store):
    if fruit in my_basket:
        print("total {} is:  {}".format(fruit, n))

Выход:

total oranges is:  1
total apples is:  2

Вы можете перебрать my_fruit и проверить, находится ли элемент в my_basket:

my_store = [1, 2]
my_fruit = ['oranges', 'apples']
my_basket = ['oranges', 'apples', 'grapes', 'bananas']

for i, x in enumerate(my_fruit):
     if x in my_basket:
         print(f'Total {x} is {my_store[i]}')

# Total oranges is 1
# Total apples is 2

enumerate помогает вам перебирать список, отслеживая индекс, чтобы вы могли найти его в my_store.

Ответ принят как подходящий

Нет необходимости повторять петлю, если в корзине есть фрукты. Вы можете получить индекс фрукта, а затем использовать этот индекс, чтобы найти номер этого конкретного фрукта из my_store.

Это можно сделать так.

for f in my_fruit:
    if f in my_basket:
        n = my_store[my_fruit.index(f)]
        print("total {} is:  {}".format(f, n))

Вы можете достичь того же результата, используя enumerate, что дает дополнительное преимущество, заключающееся в том, что вам не нужно снова получать индекс из списка.

Это можно сделать так

for idx, f in enumerate(my_fruit):
    if f in my_basket:
        n = my_store[idx]
        print("total {} is:  {}".format(f, n))

Другие вопросы по теме