这是我的第一个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)))
它不会给出语法错误,但它没有显示任何内容。
答案 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中是不可变的: