2014-12-27 201 views

回答

2
list1 = ['abc', 'def'] 
list2=[] 
for t in list1: 
    for h in t: 
     list2.append(h) 
map_list = []   
for x,y in enumerate(list2): 
    map_list.append(x) 
print (map_list) 

輸出:

>>> 
[0, 1, 2, 3, 4, 5] 
>>> 

這正是你想要的。

If you dont want to reach each element then:

list1 = ['abc', 'def'] 
map_list=[] 
for x,y in enumerate(list1): 
    map_list.append(x) 
print (map_list) 

輸出:

+27

我downvoted蟒蛇的陰影,因爲這並不能解釋爲什麼原來的代碼沒有工作或OP的理解錯誤在哪裏。 – SethMMorton

1

它應該是:

for s in my_list:  # here s is element of list not index of list 
    t = (s, 1) 
    map_list.append(t) 

我想你想:

for i,s in enumerate(my_list): # here i is the index and s is the respective element 
    t = (s, i) 
    map_list.append(t) 

enumerate給指數和元素

注意:使用list作爲變量名是不好的做法。其內置功能

5

請勿使用名稱list作爲列表。下面我使用了mylist

for s in mylist: 
    t = (mylist[s], 1) 

for s in mylist:分配的mylist元件ss即發生在第二次迭代中在第一次迭代的值「ABC」和「DEF」。因此,s不能用作mylist[s]中的索引。

相反,簡單地做:

for s in lists: 
    t = (s, 1) 
    map_list.append(t) 
print map_list 
#[('abc', 1), ('def', 1)] 
11

當你遍歷一個列表,循環變量接收實際的列表元素,而不是他們的索引。因此,在您的示例s是一個字符串(首先abc,然後def)。

它看起來像你想做什麼本質上是這樣的:

orig_list = ['abc', 'def'] 
map_list = [(el, 1) for el in orig_list] 

這是使用所謂的list comprehension一個Python構造。

0

for s in list將產生列表中的項目而不是它們的索引。所以s將爲'abc'第一個循環,然後 'def''abc'只能是字典的關鍵字,而不是列表索引。

t一致通過索引獲取項目在Python中是多餘的。

相關問題