首页 > 解决方案 > 带有if else跳过最后一项Python的for循环

问题描述

我正在尝试创建一个仅包含初始列表数量的列表。我创建了一个代码来检索数字,但它跳过了最后一项。我不明白为什么会这样。谢谢 :)

list1=['a13','b23','c33','d43']  #a13=item   a,1,3 = subitems
list2=[]
list3=[]
for item in list1:
    for subitem in item:
        if subitem.isdigit()==True:
            list2.append(subitem)
            if len(list2)<=2:
                join_digit=''.join(list2)
            else:
                list3.append(join_digit)
                list2=list2[-1:]
print(list3)

输出:

['13','23','33']

预期输出:

['13','23','33','43']

标签: pythonfor-loopif-statement

解决方案


您在list3处理下一个项目时追加;最后一项已处理,但从未附加到list3.

可能需要删除带有if/的整个逻辑;相反,在内部循环else之外做一些事情:for

list1 = ['a13', 'b23', 'c33', 'd43']  #a13=item   a,1,3 = subitems
list3 = []
for item in list1:
    list2 = []
    for subitem in item:
        if subitem.isdigit():
            list2.append(subitem)
    joined_digits = ''.join(list2)
    list3.append(joined_digits)
print(list3)

(我也省略了== True,这里是多余的。)


推荐阅读