#python #list
#python #Список
Вопрос:
У меня есть 3 списка ниже. Я хочу создать expected_list, который имеет ту же форму, что и список 1, и будет содержать элемент в списке 2, если элемент в списке 1 имеет «Просмотр в», в противном случае он будет пустым («»)
list1 = [ "Review abcd"
"Neu"
"Review defg"
"Review hmk"
"hmd"
"Review lmi"
"Review yuj"
"jmf"
"Review Bad"]
list2 = [ "http1"
"http2"
"http3"
"http4"
"http5"
"http6"]
expected_list = [ "http1"
""
"http2"
"http3"
""
"http4"
"http5"
""
"http6"]
Я попробовал следующий код
for idx, item in enumerate(list1):
if "Review" in list1[idx]:
for j in rang(len(list2))
expected_list.append(list2[j])
else:
expected_list.append("")
Однако к каждому элементу, удовлетворяющему условию, добавляется весь элемент в списке2. Таким образом, форма ожидаемого списка больше, чем ожидалось. Я знаю, что создание 2-го цикла неверно. Но как я могу это исправить?
Комментарии:
1. нужны значения, разделенные запятыми
2. Что вы пытались отладить, почему ваш код не работает?
Ответ №1:
Вам просто нужно что-то вроде:
for idx, item in enumerate(list1):
if "Review" in item: # use *item* here, that's the whole point of enumerate
expected_list.append(list2[idx])
else:
expected_list.append("")
А еще лучше, используйте zip
:
for item1, item2 in zip(list1, list2):
if "Review" in item1:
expected_list.append(item2)
else:
expected_list.append("")
Ответ №2:
эти списки представляют собой один элемент, вам нужно разделять значения запятыми:
кроме того, вам не нужно много вещей там:
j = 0
for each in list1:
if "Review" in each:
expected_list.append(list2[j])
else:
expected_list.append("")
j =1
Комментарии:
1. спасибо. В моем случае я должен поместить j =1 в строку expected_list.append(list2[j]), потому что, если в каждом обзоре нет обзора, я не хочу, чтобы индекс list2 увеличивался. Кстати, спасибо, что просветили меня.