2017-03-16 33 views

回答

1

除了明显genexpr/listcomp包装:

# Lazy 
((x, i) for i, x in enumerate(test)) 

# Eager 
[(x, i) for i, x in enumerate(test)] 

你可以使用mapfuture_builtins.map上的Py2)和operator.itemgetter在C层为额外的速度做了逆转:

from future_builtins import map # Only on Py2, to get Py3-like generator based map 

from operator import itemgetter 

# Lazy, wrap in list() if you actually need a list, not just iterating results 
map(itemgetter(slice(None, None, -1)), enumerate(test)) 

# More succinct, equivalent in this case, but not general reversal 
map(itemgetter(1, 0), enumerate(test)) 
1

用途:

test = ["test", "test2", "test3"] 
print ([(test1, i) for i, test1 in enumerate(test)]) 

我做了修复一个小错字你在开始的代码了。我将i, test更改为​​。

而且我将(i,test1)转换为(test1,i)

+0

如果你正在开箱和重新包装,只需按相反顺序重新包装,并跳过切片... – ShadowRanger

+0

哦,是的......那会让更多感。更新。 – Neil

1

您可以简单地在列表理解语句中切换变量。

test = ["test", "test2", "test3"] 
print ([(test,i) for (i,test) in enumerate(test)]) 

结果:

[('test', 0), ('test2', 1), ('test3', 2)] 
相关问题