如何遍历元组列表?

时间:2019-07-05 13:53:08

标签: python while-loop tuples iteration

我对python的这项作业有些怀疑。该练习包括以下内容:

  

这辆公共汽车有一个乘客进出控制系统,用于监视它所载的乘客人数,从而检测出何时容量过大。

     

在每个停靠点处,乘客的进出均由一个由两个整数组成的元组表示。

bus_stop = (in, out)
     

止损的连续性由这些元组的列表表示。

stops = [(in1, out1), (in2, out2), (in3, out3), (in4, out4)]
     

目标:

     
      
  • 使用列表,元组
  •   
  • 使用while / for循环
  •   
  • 使用最小,最大,长度
  •   
  • 使用平均值,标准差
  •   
     

任务:

     
      
  • 计算停车次数。
  •   
  • 为变量分配一个列表,其元素为每个车站(进出)的乘客人数,
  •   
  • 找到公共汽车的最大占用空间。
  •   

到目前为止,我已经提出了这段代码,但是它没有返回任何内容,因此,由于我对python的经验不足,我肯定做错了。

bus_is_full = False
bus_capacity = 0
stops = [(20, 0), (13, 7), (40, 10), (1, 20)]
while not bus_is_full == True:
    for stop in stops:
        bus_capacity = stops()
        if bus_capacity == 50:
            bus_is_full = True
            stops +=1 
        elif bus_capacity < 50:
            stops +=1
    print(bus_capacity)

3 个答案:

答案 0 :(得分:0)

下面的代码在容量超过50(实际人口56)的第3个停靠点停靠

bus_is_full = False
bus_capacity = 0
stops = [(20, 0), (13, 7), (40, 10), (1, 20)]
stops_count = 0 # count the number of bust stops till capacity limit reached (including this stop)
for stop in stops:
    bus_capacity += stop[0] - stop[1]  # update tot bus_capacity with change in current bus stop (e.g if (13, 7) -> +6 people added)
    if bus_capacity >= 50:
        bus_is_full = True
        stops_count += 1 
        break
    elif bus_capacity < 50:
        stops_count += 1
print(bus_capacity)
print(stops_count)

答案 1 :(得分:0)

您可以将元组转换为列表。

    bus_is_full = False
    bus_capacity = 0
    stops = [(20, 0), (13, 7), (40, 10), (1, 20)]
    number_stops = len(stops)
    print("The number of stops is : {0}\n".format(bus_capacity))
    i=0
    while i < number_stops :
        for stop in stops:
            l = list(stop)
            in_i = l[0]
            out_i = l[1]
            print("For the {0} stop, {1} passengers entered and {2} passengers left the bus".format(i, in_i, out_i) )
            i += 1

答案 2 :(得分:0)

这里是写Sultan1991说的话的一种稍微简单的方法

bus_capacity = 0
stops = [(20, 0), (13, 7), (40, 10), (1, 20)]
num_stops = 0
for on, off in stops:
    bus_capacity += on - off
    num_stops += 1
    if bus_capacity >= 50:
       break
print("Bus capacity:", bus_capacity)
print("Number of stops:",num_stops)

也要注意:这样的循环在大型数据集上并不是特别有效。因此,如果您要处理的数据不仅限于此,我建议您查看numpypandas库,因为它们可以显着加快并减少此类操作所需的内存。