2013-10-29 68 views
-1

這是我應該做的事: 寫一個函數從用戶那裏得到的L值列表,並從它建立在形式[(a1,b1),..(an,bn)]其中ai是一個元組列表原始列表和bi的每個值代表其在列表中的位置。構建列表

例子: 對於L=[3,2,-1,7,3,5]功能應建立並返回[(3,1),(2,2),(-1,3),(7,4), (3,5),(5,6)]

這是我的代碼:

a=input("Enter values separated by comas: ") 
L=eval(a) 
print(L) 
+1

在用戶輸入中使用'eval'是一個危險的習慣。如果你知道它應該是整數,你可以在'a.split(',')]中做'L = [int(x) –

回答

5

使用enumerate和列表理解:

>>> L = [3, 2, -1, 7, 3, 5] 
>>> [(x, i) for i, x in enumerate(L, 1)] 
[(3, 1), (2, 2), (-1, 3), (7, 4), (3, 5), (5, 6)] 

幫助上enumerate

>>> help(enumerate) 
Help on class enumerate in module __builtin__: 

class enumerate(object) 
| enumerate(iterable[, start]) -> iterator for index, value of iterable 
| 
| Return an enumerate object. iterable must be another object that supports 
| iteration. The enumerate object yields pairs containing a count (from 
| start, which defaults to zero) and a value yielded by the iterable argument. 
| enumerate is useful for obtaining an indexed list: 
|  (0, seq[0]), (1, seq[1]), (2, seq[2]), ...