【发布时间】:2018-04-12 18:10:53
【问题描述】:
我编写了一个程序,它试图在字母列表 (letterList) 中找到一系列字母(toBeFound - 这些字母代表一个单词),但是它拒绝承认当前的 3 个字母系列,因为它计算了'I' 在第一个列表中出现两次,将其添加到重复列表中。
目前此代码返回“不正确”,而它应该返回“正确”。
letterList= ['F','I', 'I', 'X', 'O', 'R', 'E']
toBeFound = ['F', 'I', 'X']
List = []
for i in toBeFound[:]:
for l in letterList[:]:
if l== i:
letterList.remove(l)
List.append(i)
if List == toBeFound:
print("Correct.")
else:
print("Incorrect.")
letterList 和 toBeFound 是样本值,每个中的字母可以是任何值。我无法设法遍历代码并成功确保忽略重复项。任何帮助将不胜感激!
【问题讨论】:
-
为什么不把 letterList 做成一个集合呢?
-
我的猜测是相对顺序很重要。
-
我建议您将条件从
if l==i更改为if l==i and not l in List:。 -
@bertew 您是否只想删除 连续重复项(彼此并排的),还是子列表的顺序根本不重要?即
['X', 'X', 'F', 'I']中的['F', 'I', 'X']应该是真的吗? -
看起来真的是XY problem。你想达到什么目的? 如果 list1 按该顺序包含 list2 中的字符?
"".join(list2) in "".join(list1)。 如果 list2 元素在 list1 中?all([x in list1 for x in list2])还是什么?
标签: python python-3.x list for-loop iteration