For循环,如果不执行则跳过最后一项Python

时间:2020-09-14 00:22:38

标签: python for-loop if-statement

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

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']

3 个答案:

答案 0 :(得分:1)

您要在处理下一项时附加到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,在这里是多余的。)

答案 1 :(得分:0)

您的代码else语句在下一个循环上运行(这将数字添加到列表中)。因此您需要再添加一个list3.append来添加最后一个单词。

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:]
if join_digit !=list3[-1]:
   list3.append(join_digit)
print(list3)```

答案 2 :(得分:0)

list1=['a13','b23','c33','d43']
answer=[]
for string in list1:
    sub=""
    for char in string:
        if char.isdigit():
            sub += char
    answer.append(sub)
print(answer)