所以,有一个像
这样的清单list=["one","two","ne","three"....]
我想知道,如何使用endswith()方法将列表中的每个元素与其他元素进行比较? 在此列表中,例如,list [0] endwith list [2]。
我自己无法进行比较。 我尝试过这样的事情:
aa=list
flg=False
for i in range(len(ll)-1):
aa.append(ll[i+1])
if ll[i].endswith(aa[i]):
flg=True
但是,它只适用于第一个元素,而不是每个元素。
答案 0 :(得分:2)
使用集合:
words = {"one","two","ne","three"}
[x for x in words if any(word.endswith(x) for word in words - {x})]
Out[69]: ['ne']
基本上,对于每个元素,将其从words
集中删除,然后测试截断集中的任何其他单词是否以该单词结尾。
答案 1 :(得分:1)
您只是在列表中进行了一次传递,即使您已将目标定为“将列表中的每个元素与其他元素进行比较”。这需要在列表中对每个元素进行一次遍历列表。如果您有n个项目,则每个项目将遍历列表n次,总共n ^ 2次遍历。
因此,在解决方案中需要两个 for循环:一个遍历列表一次并选择将要比较的元素,并在该循环内,另一个将检查该元素与其他元素
for n in ll:
for m in ll:
if m.endswith(n) and m != n:
print(m, "ends with", n)