检查Python数组中是否有两个相同的字符串元素

检查Python数组中是否有两个相同的字符串元素,python,arrays,Python,Arrays,我有一个字符串数组,如下所示: [a1、a2、a1、a3、a2] 我想找到类似的字符串并将它们放入一个新数组中,如下所示: [a1,a2] 我是Python新手。请告诉我怎么做 谢谢。如果您所说的数组是指python中的列表-: s = ["a1","a2","a1","a3","a2"] duplicates = [x for x in s if s.count(x) > 1] myl = list(set(duplicates)) print myl 输出['a1',a2']如果按数

我有一个字符串数组,如下所示:

[a1、a2、a1、a3、a2]

我想找到类似的字符串并将它们放入一个新数组中,如下所示:

[a1,a2]

我是Python新手。请告诉我怎么做


谢谢。

如果您所说的数组是指python中的列表-:

s = ["a1","a2","a1","a3","a2"]
duplicates = [x for x in s if s.count(x) > 1]
myl = list(set(duplicates))
print myl

输出
['a1',a2']

如果按数组表示python中的列表-:

s = ["a1","a2","a1","a3","a2"]
duplicates = [x for x in s if s.count(x) > 1]
myl = list(set(duplicates))
print myl

输出
['a1',a2']

使用


使用

这里是O(nlog(n))方法来查找重复项。初始列表被排序(O(nlog(n)),以便在相邻位置重复元素。然后简单的O(n)迭代就可以找到重复项

s = ["a1","a2","a1","a3","a2"]
s.sort() # sort changes initial list
new_list = []
prev = (None, False)
for x in s:
    if prev == (x, False):
        new_list.append(x)
        prev = (x, True)
    else:
        prev = (x, False)
print new_list
这里是O(nlog(n))方法来查找重复项。初始列表被排序(O(nlog(n)),以便在相邻位置重复元素。然后简单的O(n)迭代就可以找到重复项

s = ["a1","a2","a1","a3","a2"]
s.sort() # sort changes initial list
new_list = []
prev = (None, False)
for x in s:
    if prev == (x, False):
        new_list.append(x)
        prev = (x, True)
    else:
        prev = (x, False)
print new_list

虽然我不知道它的性能,但它确实有效

s = ["a1","a2","a1","a3","a2"]
i=0
common=[]
for i in range(0,len(s)):
  if s[i] not in common and s[i] in s[i+1:]:
    common.append(s[i])

虽然我不知道它的性能,但它确实有效

s = ["a1","a2","a1","a3","a2"]
i=0
common=[]
for i in range(0,len(s)):
  if s[i] not in common and s[i] in s[i+1:]:
    common.append(s[i])

非常感谢RanRag。你救了我一天。:)非常感谢RanRag。你救了我一天。:)