Как создать ожидаемый список?

#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 увеличивался. Кстати, спасибо, что просветили меня.