选项卡中未添加最后一个值。 所以我创建了一个程序来测试字符串是否包含在其他字符串上。它有效,但最后一个值没有注意。 结果:
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]
答案 0 :(得分:0)
您似乎正在尝试从测试字符串创建一个新的唯一字符串列表。如果这是你的意图,那么这段代码将不起作用。如果那不是您的意图,那么请在本文末尾看到解决方案,否则继续阅读。
'mot'存储上一次迭代,然后与'tab'列表中的下一个元素进行比较。现在假设,如果您的输入字符串是“测试trete apoi”,那么您不会将“test”与“testing”进行比较。您的代码将导致['test','toto','testing','trete',' apoi']。因此,它没有按照它应该的方式工作。一个基本的解决方案可以通过两个循环来实现,如下所示:
user.saveSubscriber = (jSubscriberData, fCallback) => {
var jSubscriber = {
email: jSubscriberData.txtEmail,
firstName: jSubscriberData.txtName,
lastName: jSubscriberData.txtLastName,
address: {
type: "Point",
coordinates: [jSubscriberData.lng, jSubscriberData.lat]
}
}
global.db.collection('subscribers').insertOne(jSubscriber, (err, jResult) => {
if (err) {
var jError = { "status": "error", "message": "ERROR -> saveSubscriber -> user.js -> 001" }
return fCallback(false, jError)
}
var jOk = { "status": "ok", "message": "user.js -> subscriber saved -> 000" }
return fCallback(false, jOk)
})
}
您的帖子解决方案可以通过以下方式实现:
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)
希望,这会有所帮助!
p.s:顺便说一句,你可以让它变得更加pythonic。