Как добавить в список один раз в двойном цикле? - PullRequest
0 голосов
/ 04 мая 2019

Я пытаюсь добавить число в список только тогда, когда i > 5, и пустую строку, если номер не превышает 5.

Моя проблема пытается добавить число раз, равноев одну пустую строку и в соответствии с первым для цикла for i in range(0,10)

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

my_list = []

for i in range(0,10):
    for j in range (0,5):
        if i > 5:
            my_list.append(i)
        else:
            my_list.append('')

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

Вывод должен представлять собой список из 10 элементов в следующем виде:

output = ['', '', '', '', '', '', 6, 7, 8, 9]

Второй пример, как приведенный выше, может иметь слишком упрощенные вещи:

file_names_short = ['apple pie', 'apple cake', 'carrot apple', 'carrot cake']

threshold = 0.70
result_list = []
for x in file_names_short:
    for y in company_list:
        if similar(x, y) > threshold:
            result = x
            result_list.append(result)
        else:
            result_list.append('')

Что объясняет, почему необходим второй цикл.

Ответы [ 4 ]

2 голосов
/ 04 мая 2019

Похоже, вы хотите получить "Результат должен иметь '' для каждого file_name, который не соответствует условию, и file_name, если он соответствует условию":

Source = ['apple pie', 'apple cake', 'carrot apple', 'carrot cake']
#            |             |            |                   |
#           bad          Good          Bad                 Good
#            |             |            |                   |
Result = [   ''      , 'apple cacke',   ''          ,  'carrot cake']

Это то, что вы хотите?

my_list = []

for i in range(0,10):
    for j in range (0,5):
        if i > 5:
            my_list.append(i)
            break
    else:  # else of the `for`!!! not of the `if`
        # Condition did not match, so cycle was not broken - append ''
        my_list.append('')

threshold = 0.70
result_list = []

for x in file_names_short:
    for y in company_list:
        if similar(x, y) > threshold:
            result_list.append(x)
            break
    else:
        result_list.append('')
2 голосов
/ 04 мая 2019

Не уверен, почему у вас есть дополнительный внутренний цикл for, когда ваш внешний цикл выполняет всю работу за вас

my_list = []

for i in range(0,10):
    if i > 5:
        my_list.append(i)
    else:
        my_list.append('')
print(my_list)

Выход составляет

['', '', '', '', '', '', 6, 7, 8, 9]

Когда у вас есть дополнительный внутреннийцикл, каждая операция my_list.append выполнялась 5 раз для каждого i, следовательно, вы видите в общей сложности 35 пробелов и 5 чисел каждая!Что является

['', '', '', '', '', '', '', '', '', '', '', 
'', '', '', '', '', '', '', '', '', '', '', '', 
'', '', '', '', '', '', '', 6, 6, 6, 6, 6, 7, 
7, 7, 7, 7, 8, 8, 8, 8, 8, 9, 9, 9, 9, 9]
0 голосов
/ 04 мая 2019

Следующие должны сделать это:

my_list = [i if i > 5 else '' for i in range(10)]

Это выводит:

[" ", " ", " ", " ", " ", 6, 7, 8, 9]

Желаю тебе всего наилучшего.

0 голосов
/ 04 мая 2019

Если я правильно понимаю, вы хотите зациклить, для чисел от 0 до 9 включительно, и для 1, 2, 3, 4, 5 вы хотите вставить пустую строку, а для 6, 7, 8 и 9 , вы хотите вставить эти цифры.

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

my_list = []

for i in range(0,10):
    if i > 5:
        my_list.append(i)
    else:
        my_list.append('')

print(my_list)

выходы:

['', '', '', '', '', '', 6, 7, 8, 9]
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...