Список нарезки и индексы - PullRequest
0 голосов
/ 10 марта 2020

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

faveFoods = ['buffalo wings' , 'menudo' , 'mashed potatoes' , 'man and cheese']

for food in faveFoods:
   print('I love', food[0], 'because they are spicy')

Это выводит:

I love b because it is spicy
I love m because it is spicy
I love m because it is spicy
I love m because it is spicy

Ответы [ 3 ]

1 голос
/ 10 марта 2020

for l oop перебирает список faveFoods - это означает, что каждый раз, когда выполняется содержимое for l oop, значение food является фактическим продуктом питания, а не исходный список.

faveFoods = ['buffalo wings' , 'menudo' , 'mashed potatoes' , 'man and cheese']

for food in faveFoods:
    print('I love', food[0], 'because they are spicy')
    # food is 'buffalo wings' the first time, then 'menudo', etc.
    # using [0] on that value refers to the first letter in the name instead.

Вместо этого вы, вероятно, либо захотите сослаться на элемент в исходном списке, либо food напрямую:

for food in faveFoods:
    print('I love', food, 'because they are spicy')

Это распечатает каждый элемент из вашего faveFoods список с текстом перед и после.

Однако, поскольку картофельное пюре обычно не является острым, вы можете просто сослаться на первый элемент списка faveFoods. В этом случае вам не нужно for l oop, а вместо этого обратитесь непосредственно к списку faveFoods:

print('I love', faveFoods[0], 'because they are spicy')

Из комментария ниже - если вы хотите приложить причину, вы вместо этого можно использовать словарь, чтобы сохранить причину вместе с каждым вариантом питания:

foods = {'buffalo wings': 'because they are spicy', 
         'menudo': 'because it is a good hangover cure',
         ...
}

for food in foods:
    print('I love', food, foods[food])
    # foods[food] refers to the reason (i.e. look up <food> in the dictionary
    # given above and return the reason attached.
0 голосов
/ 10 марта 2020

Это дало мне результат, который я искал, я уверен, что это довольно грязно и неэффективно. Спасибо всем, что нашли время ответить.

faveFoods = ['buffalo wings', 'menudo', 'mashed potatoes', 'mac and cheese']

for food in range(0,len(faveFoods),4):
   print('I love', faveFoods[food], 'because they are spicy')
for food in range(1,len(faveFoods),4):
   print('I love', faveFoods[food], 'because it is a good hangover cure')
for food in range(2,len(faveFoods),4):
    print('I love', faveFoods[food], 'when there is gravy')
for food in range(3,len(faveFoods),4):
    print('I love', faveFoods[food], 'when the noodles are squishy')
0 голосов
/ 10 марта 2020

Из вопроса ясно, что вы не знаете, как работает оператор for-each в python. Попробуйте обновить sh ваши знания, это избавит вас от многих головных болей

Вы можете зайти в Google "Python для каждого заявления" или использовать Официальный

faveFoods = ['buffalo wings' , 'menudo' , 'mashed potatoes' , 'man and cheese']
for food in faveFoods:
    print('I love {} because they are spicy'.format(food))

Если вы хотите вывести «Я люблю крылья буйвола, потому что они пряные», вам не нужно al oop для этого

print("I love {} because they are spicy".format(faveFoods[0]))
...