Python没有显示任何内容

时间:2012-01-04 13:01:12

标签: python

这是我的第一个Python程序,我的第一个练习是我只需要在一个元组中交换位置:

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

是元组,我需要将Frans与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)))

它不会给出语法错误,但它没有显示任何内容。

3 个答案:

答案 0 :(得分:8)

要显示您需要print的内容。

将最后一行更改为:

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

答案 1 :(得分:3)

对于简单的任务来说,这是非常复杂的代码。查看名为list comprehension的内容。

将代码更改为:

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

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

更新

我在评论中看到了你的解决方案。我不知道是否有更多关于我不知道的例外情况的前提。但我可能会这样做:

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)

map的iterable参数不必是数值范围。它可能是列表本身。但也许我错过了一些你已经得到它的东西:)

答案 2 :(得分:0)

元组在Python中是不可变的:

http://docs.python.org/reference/datamodel.html