这是我有的代码。正如你所看到的,如果元素还不在列表中,我会将每个元素附加到列表中,但我注意到我仍然以某种方式获得重复的元素。不在列表中仍然给我重复的元素
def getExtraData(table):
extraData = list()
for ele in table:
extras = re.findall('\[(.+?)\]', str(ele[0]))
for extra in extras:
single = extra.split(", ")
for s in single:
if s not in extraData:
extraData.append(s)
return extraData
在pycharm调试器控制台中显示了一个截图,以显示该元素是否真的相同。
为什么会发生这种事,我怎么能解决这个问题?
这会慢两倍(列表上的两次迭代,并重新分配内存,因为对于生成器中的每个元素,都会创建一个小写字符串,该字符串作为不可变对象必须被复制),但是当然是大噩梦的复杂性。此外,现在您将从容器中获得第一个大写字母,因此该过程依赖于订购。 – lejlot