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