假设我们有一个包含5个字符串的列表:
list = ['hello', 'alloha', 'hi there', 'good day', 'hello']
我想看看是否有任何字符串是相同的(奖励:如果任何字符串相同,则获取列表中相同元素的索引)。
解决这项小任务最有效的方法是什么?它是否适用于包含两个以上相同元素的更大列表?
我在考虑(不知何故)将每个字符串的长度相互比较,然后如果长度数学比较相同位置的字母。
答案 0 :(得分:4)
用一组来哈希它们并比较长度
if len(set(mylist)) != len(mylist):
print("some members match!")
else:
print("no members match")
答案 1 :(得分:1)
一个很好的方法来了解它们是否存在同时获取索引是创建一个小函数,将这些信息保存在返回值中。
具体来说,它使用集合检查成员资格,如果找到类似的索引,则返回这些列表(ergo,类似的单词存在),而如果找不到,则返回空列表(意思是,没有匹配):< / p>
def sim(ls):
s = set()
for i, j in enumerate(ls):
if j not in s:
s.add(j) # add the value
else:
yield i # yield the index
然后,您可以获取此函数产生的结果,并检查if
条件中的值(如果需要):
lst = ['hello', 'alloha', 'hi there', 'good day', 'hello']
res = list(sim(lst)) # get indices if they exist
# check against them
if res:
print("Similar values in indices :", res)
else:
print("print("No similar words")
打印出来:
Similar values in indices : [4]