Python 添加到嵌套列表中的变量

Python 添加到嵌套列表中的变量,python,list,Python,List,我正在尝试创建一个嵌套的列表,但我不知道该怎么做。目前,我有一个这样的循环: filtered = [] p = -1 for i in list: p += 1 for k in list_of_lists[p]: if not k in filter: filtered.append(k) 虽然这是可行的,但它需要大约5-8秒的时间才能完成,而且在使用它的情况下,这段时间几乎是不可接受的。我试图让它成为一个列表理解,但我似乎找不到一种方法来让列表理解中的p+=1

我正在尝试创建一个嵌套的列表,但我不知道该怎么做。目前,我有一个这样的循环:

filtered = []
p = -1
for i in list:
  p += 1
  for k in list_of_lists[p]:
    if not k in filter:
      filtered.append(k)
虽然这是可行的,但它需要大约5-8秒的时间才能完成,而且在使用它的情况下,这段时间几乎是不可接受的。我试图让它成为一个列表理解,但我似乎找不到一种方法来让列表理解中的p+=1。我试图这样做:

filtered = [i for i in list for k ind list_of_list[p], p+=1]

但它显然不起作用。我想知道是否有办法解决这个问题。

我会将其展平,然后将其转换为一个集合,因为您无法在列表中进行自我引用。不同之处在于,一个集合只能有一个项目,并且不强制执行订单

list_of_lists = [["blue","green","red"],["red","yellow","white"],["orange","yellow","green"]]
filtered = set(y for x in list_of_lists for y in x)
print(filtered)

您能提供一个输入和所需输出的示例吗?为什么要在列表中循环,然后使用列表中的列表?p不能用enumerate替换吗?列表是内置的Python函数。你为什么要重新定义它?你为什么一直跟踪你自己的计数器?无论如何,同等的列表理解只会给你带来最好的边际性能提升。问题是,您的算法在扫描的项目数量上是二次时间,因为您每次都检查筛选,这是一个列表,因此它将进行线性成员测试。使用集合我认为这是正确的方法,但我不会说集合和列表的函数基本相同。它们是两种不同的容器类型,具有非常不同的用例。列表是序列,因此它们是有序的,并且具有索引行为,而且它们具有线性时间成员测试。集合是无序的,只包含唯一的值,并且具有固定时间成员身份测试。