对于循环python,最后一个值不会添加到lis中

2024-06-17 09:24:34 发布

您现在位置:Python中文网/ 问答频道 /正文

最后一个值不会添加到选项卡中。 所以我创建了一个程序来测试一个字符串是否包含在另一个字符串上。它是有效的,但最后的价值是不小心。 结果:

result: ['testing', 'toto', 'trete'] 
what expected: ['testing', 'toto', 'trete','apoi']

str= ("""test
testing
toto
trete
apoi""")

tab = str.splitlines()
tabmot = []

mot = ""
for i in range(len(tab)):
  print(int(tab[i])
  if mot in tab[i]:
    mot = tab[i]
  else:
    if mot != "":
        tabmot.append(mot)
    elif tab[i] == tab[-1]:
        tabmot.append(tab[i])
    mot = tab[i]

Tags: 字符串in程序iftestingtab选项卡价值
1条回答
网友
1楼 · 发布于 2024-06-17 09:24:34

似乎您正在尝试从测试字符串创建一个新的唯一字符串列表。如果这是你的意图,那么这个代码将不起作用。如果这不是你的意图,那么在这篇文章的最后看看解决方案,否则继续阅读。你知道吗

“mot”存储上一个迭代,然后与“tab”列表中的下一个元素进行比较。现在假设,如果您的输入字符串是–“test toto testing trete apoi”,那么您没有将“test”与“testing”进行比较。您的代码将产生['test'、'toto'、'testing'、'trete'、'apoi']。因此,它没有按它应该的方式工作。基本解决方案可以通过两个循环来实现,如下所示:

str= ("""test testing toto trete apoi""")
tab = str.split()
tabmot = []
mot = ""
for i in range(len(tab)):
   mot = tab[i]
   for j in range(i+1, len(tab)-1):
       if(mot in tab[j]):
          if(len(mot) < len(tab[j])):
             mot = tab[j]
   if(mot not in tabmot):
      tabmot.append(mot)
print(tabmot)

您的帖子的解决方案可以通过以下方式实现:

tab = str.split()
tabmot = []
mot = tab[0]
for i in range(1,len(tab)):    
  if mot in tab[i]:
    mot = tab[i]
    tabmot.append(mot)
  else:
    tabmot.append(tab[i])
  mot = tab[i]
print(tabmot) 

希望能有帮助!你知道吗

附言:顺便说一句,你可以让它更像Python。你知道吗

相关问题 更多 >