例如,Python - 有沒有辦法使用枚舉來獲取(str,index)而不是(index,str)?
test = ["test1", "test2", "test3"]
print ([(i, test) for i, test in enumerate(test)])
>> [(0, 'test1'), (1, 'test2'), (2, 'test3')]
有一種方法來代替得到[( '試驗',0),( 'TEST2',1),( 'TEST3',2)]?
例如,Python - 有沒有辦法使用枚舉來獲取(str,index)而不是(index,str)?
test = ["test1", "test2", "test3"]
print ([(i, test) for i, test in enumerate(test)])
>> [(0, 'test1'), (1, 'test2'), (2, 'test3')]
有一種方法來代替得到[( '試驗',0),( 'TEST2',1),( 'TEST3',2)]?
除了明顯genexpr/listcomp包裝:
# Lazy
((x, i) for i, x in enumerate(test))
# Eager
[(x, i) for i, x in enumerate(test)]
你可以使用map
(future_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))
用途:
test = ["test", "test2", "test3"]
print ([(test1, i) for i, test1 in enumerate(test)])
我做了修復一個小錯字你在開始的代碼了。我將i, test
更改爲。
而且我將(i,test1)
轉換爲(test1,i)
。
如果你正在開箱和重新包裝,只需按相反順序重新包裝,並跳過切片... – ShadowRanger
哦,是的......那會讓更多感。更新。 – Neil
您可以簡單地在列表理解語句中切換變量。
test = ["test", "test2", "test3"]
print ([(test,i) for (i,test) in enumerate(test)])
結果:
[('test', 0), ('test2', 1), ('test3', 2)]
Switch'test'用'i'。 '[(t,i)for i,t in enumerate(test)]' – Psidom