如何在double-for循环中一次附加到列表?

时间:2019-05-04 01:53:17

标签: python loops

我试图仅在i > 5时将数字附加到列表中,而当数字不大于5时将空字符串附加到列表中。

我的问题是尝试附加等于单个空字符串的次数,并根据第一个for循环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('')

但是我在两个for循环中都得到了空字符串循环,我对如何继续感到困惑。

输出应为包含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 个答案:

答案 0 :(得分:2)

不确定外部循环为您完成工作时,为什么还要有一个额外的内部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的每个操作i都进行了5次,因此您看到总共35个空格,每个数字5个!哪个是

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

答案 1 :(得分:2)

您似乎想获得“对于每个不符合条件的'',结果应该有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 :(得分:0)

如果我正确理解,则要循环,对于0到9(含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]

答案 3 :(得分:0)

请执行以下操作:

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

它输出:

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

祝你一切顺利。