用于循环理解的高级python

用于循环理解的高级python,python,Python,我曾经从stackoverflow复制了一行代码: clusters = [x for n, x in enumerate(vecarray) if x not in vecarray[:n]] 我知道它的作用,但不知道如何。它为我提供了数组“vecarray”的所有唯一行,并将它们保存在“clusters”中。我对正常for循环有基本的了解,但是这个结构看起来不同 如果我还想保存索引,那么我该如何编辑这行代码?找到的行基本上是在循环找到下一个唯一编号的哪一行 有人能解释一下吗?枚举函数已经将

我曾经从stackoverflow复制了一行代码:

clusters = [x for n, x in enumerate(vecarray) if x not in vecarray[:n]]
我知道它的作用,但不知道如何。它为我提供了数组“vecarray”的所有唯一行,并将它们保存在“clusters”中。我对正常for循环有基本的了解,但是这个结构看起来不同

如果我还想保存索引,那么我该如何编辑这行代码?找到的行基本上是在循环找到下一个唯一编号的哪一行

有人能解释一下吗?

枚举函数已经将在其中找到值的行返回为n

如果您只是将代码更改为:

clusters = [(n, x) for n, x in enumerate(vecarray) if x not in vecarray[:n]]
然后应该有一个元组列表,而不是值列表

然后,您可以执行以下操作:

for n,x in clusters:
    print(x," found at row ",n)
您的代码行是一个列表。您可以将其重新编写为循环的标准:

clusters=[]
for n,x in enumerate(vecarray):
    if x not in vecarray[:n]:
        clusters.append((n,x))
枚举函数已将在其中找到值的行返回为n

如果您只是将代码更改为:

clusters = [(n, x) for n, x in enumerate(vecarray) if x not in vecarray[:n]]
然后应该有一个元组列表,而不是值列表

然后,您可以执行以下操作:

for n,x in clusters:
    print(x," found at row ",n)
您的代码行是一个列表。您可以将其重新编写为循环的标准:

clusters=[]
for n,x in enumerate(vecarray):
    if x not in vecarray[:n]:
        clusters.append((n,x))

这种循环格式在Python中被称为,是在Python中创建列表的另一种紧凑的方法

关于你的问题,你可以用多种方式保存索引,这取决于你想要什么

方法1: 例如:

方法2: 将列表理解替换为dict理解

clusters = { str(n): x for n, x in enumerate(vecarray) if x not in vecarray[:n]}
例如:


这种循环格式在Python中被称为,是在Python中创建列表的另一种紧凑的方法

关于你的问题,你可以用多种方式保存索引,这取决于你想要什么

方法1: 例如:

方法2: 将列表理解替换为dict理解

clusters = { str(n): x for n, x in enumerate(vecarray) if x not in vecarray[:n]}
例如:


请使用一些示例数据、群集结果和希望看到的更改更新问题。请使用一些示例数据、群集结果和希望看到的更改更新问题。