2012-01-04 69 views
1

這是我的第一個Python程序,我的第一個鍛鍊; Tibial是,我只是需要換一下位置在一個元組:Python不顯示任何

stamboom = [("Frans","Eefje"), ("Klaar","Eefje"), ("Eefje","Mattho"), 
      ("Eefje","Salammbo"), ("Gustave","Mattho"), ("Gustave","Salambo")] 

是元組,我需要換弗蘭斯與Eefje(那些只是名稱),然後交換第二個元組。

我讀了整個數據結構教程一下Python,我想我能做到這一點是這樣的:

#!/path/to/python 

stamboom = [("Frans","Eefje"), ("Klaar","Eefje"), ("Eefje","Mattho"), 
      ("Eefje","Salammbo"), ("Gustave","Mattho"), ("Gustave","Salambo")] 

def switchplace(x): 
    stamboom[x], stamboom[x + 1] = stamboom[x + 1], stamboom[x] 
    return stamboom 

map(switchplace, range(0, len(stamboom))) 

它好好嘗試一下給出語法錯誤,但它並不顯示任何內容。

回答

8

給你展示一些你必須要的print吧。

更改最後一行:

print map(switchplace,range(0,len(stamboom))) 
3

這是一個簡單的任務非常複雜的代碼。檢查一下名爲理解的東西。

更改代碼:

stamboom = [("Frans","Eefje"), ("Klaar","Eefje"), ("Eefje","Mattho"), 
      ("Eefje","Salammbo"), ("Gustave","Mattho"), ("Gustave","Salambo")] 

stamboom = [(item[1], item[0]) for item in stamboom] 
print stamboom 

更新

我看到評論您的解決方案。我不知道是否還有更多我不知道的excersise的前提。但我可能會這樣做:

def switchplace(x): 
    return x[1], x[0] 

stamboom = [("Frans","Eefje"),("Klaar","Eefje"),("Eefje","Mattho"), ("Eefje","Salammbo"),("Gustave","Mattho"),("Gustave","Salammbo")] 

print map(switchplace, stamboom) 

映射的迭代參數不一定是數字範圍。它可能是列表本身。但也許我錯過了一些東西,你已經得到它:)

+1

或甚至更好:'stboom = [(x2,x1)x1,x2在stamboom]' – 2012-01-04 14:33:42

+0

你是對的:) – 2012-01-04 14:42:22

+0

是的我知道,但練習sais它必須使用python的map函數完成。並且給予了這個墳場。 – user1007522 2012-01-04 14:55:15