Python 查找每个元素';s列表中的第一个索引

Python 查找每个元素';s列表中的第一个索引,python,Python,下面是一个列表a=[1,1,1,2,4,2,4,32,1,4,35,23,24,23] 我在python中这样做: unique_number=list(set(a)) ans=map(lambda x:a.index(x),unique_number) 输出: <map at 0x2b98b307828> 我想知道我的代码出了什么问题,并找到一种更有效的方法来实现这一点。尝试以下方法: for value in map(lambda x:a.index(x),unique_

下面是一个列表
a=[1,1,1,2,4,2,4,32,1,4,35,23,24,23]

我在python中这样做:

unique_number=list(set(a))
ans=map(lambda x:a.index(x),unique_number)
输出:

<map at 0x2b98b307828>

我想知道我的代码出了什么问题,并找到一种更有效的方法来实现这一点。

尝试以下方法:

for value in map(lambda x:a.index(x),unique_number):
     print(value)
或附加以下内容:

for var in ans:
     print(var)
试试这个:

for value in map(lambda x:a.index(x),unique_number):
     print(value)
或附加以下内容:

for var in ans:
     print(var)

这段代码将在Python2中按预期工作。在Python3中,返回一个迭代器。例如,您可以将其转换为列表:

>>> ans=map(lambda x:a.index(x),unique_number)
>>> list(ans)
[7, 0, 3, 10, 4, 11, 12]

这段代码将在Python2中按预期工作。在Python3中,返回一个迭代器。例如,您可以将其转换为列表:

>>> ans=map(lambda x:a.index(x),unique_number)
>>> list(ans)
[7, 0, 3, 10, 4, 11, 12]

您可以避免先重新索引和构建集合-只需向后构建一个
dict
迭代
a
,因为字典将只保留键的最后一个值(在这种情况下-最早出现的索引),例如:


这样,您只需扫描序列一次。

您可以避免先重新索引和构建集合-只需构建一个
dict
向后迭代
a
,因为字典将只保留键的最后一个值(在本例中为最早出现的索引),例如:


这样,您只需扫描序列一次。

如果您打印(列表(ans))?@khelwood它返回
[7,0,3,10,4,11,12]
您想要的输出是什么?另外,您不需要lambda来获取的
list(map(a.index,list(set(a))))
如果您试图获取唯一值的索引,那么@khelwood是正确的,因此输出是正确的。如果您试图获取唯一值本身,则删除
ans=map(lambda x:a.index(x),Unique_number)
并直接打印
Unique_number
如果您
print(list(ans))
?@khelwood它返回
[7,0,3,10,4,11,12]
您希望的输出是什么?另外,您不需要lambda来获取的
list(map(a.index,list(set(a))))
如果您试图获取唯一值的索引,那么@khelwood是正确的,因此输出是正确的。如果您试图获取唯一值本身,则删除
ans=map(lambda x:a.index(x),Unique_number)
并直接打印
唯一编号
无需lambdahere@Chris_Rands这是从OP复制的。我刚才解释了为什么他得到了他得到的输出。也许值得注意的是,当使用map时,整个lambda都可以去。。。只要
list(map(a.index,set(a))
就可以了……不需要lambdahere@Chris_Rands这是从OP复制的。我刚才解释了他为什么会得到他得到的输出。可能值得注意的是,当使用map时,整个lambda都可以使用……只要
list(map(a.index,set(a))
就可以了……可能需要
len(a)
不在指令范围内comp@Chris_Rands是的……或者zip
a
带有
范围(len(a),-1,-1)
而不是
enumerate
。。这个想法可以调整:)可能将
len(a)
带到口述之外comp@Chris_Rands是的…或邮政编码a
范围(len(a),-1,-1)
而不是
枚举
…这个想法可以调整:)