0

我对这些程序行有一些问题。我正在 python 中编写一个函数,该函数将列表列表和字符串作为输入,如果列表中列表的第二个元素等于给定的字符串,则返回“名称在此处”。在这种情况下,我拥有的列表是这个

railway = [["Milan","Zurich"],["Zurich","Bern"],["Bern","Berlin"],["Berlin","Copenaghen"]] 

我的功能是:

def travel( list , stringdestination):
        i = 0
    for elemento in range(len(list)):
      if list[i][1] == stringdestination:
          print "target reached"   

当我运行时:

travel(railway, "Bern") 

它应该显示:“达到目标”但它没有,它没有显示任何东西,为什么?

4

4 回答 4

3

正如已经回答的那样,您没有增加循环变量。但这就是微不足道的问题,更重要的是,您就像一个工具箱里只有一把锤子的人一样来找这个螺丝钉。这几乎就是创建称为字典的数据结构的确切原因。它是内置的。

阅读这个,它更容易和更好。 http://www.tutorialspoint.com/python/python_dictionary.htm

于 2013-04-18T17:24:09.113 回答
3

你永远不会增加 i。你的循环应该是:

for pair in list:
    if pair[1] == stringdestination:
        print "target reached"
于 2013-04-18T17:10:17.403 回答
2

几点:

  1. 不要list用作变量名。list是内置名称
  2. 直接迭代列表for i in mylist
  3. 可以通过在迭代中分配 2 个变量来“解包”列表中的对

例如:

def travel(places, destination):
    for start, dest in places:
        if destination == dest:
            print "target reached"
            break

当您找到目的地时,您可能希望停止迭代。通过立即从函数返回或中断而不返回任何内容来执行此操作(如果return函数中没有,则隐式返回None)。

于 2013-04-18T17:14:02.590 回答
0

我会将它包装在 a 中function,所以当 a 建立正确的字符串时我会停下来。它防止循环遍历整个列表:

def arrived(s, raileway):
    for r in railway:
        if r[1] == s:
            return True
    return False

if arrived("Bern", railway):
    print("target reached")
于 2013-04-18T17:13:20.680 回答