1

我有多个问题,发现自己在 python 中迷失了方向。
问题:
如何比较三个列表?(会不会类似于“for x in y”)

例子:

list1 = [1,2,3]               
list2 = [a,b,c]                
list3 = [aa,bb,cc]   

输出:

[1,a,aa]   [2,b,bb]    [3,c,cc]

我正在为一场比赛创建一个模拟,1=vehicle,a=driver,aa= 赞助商我得到了一个公式,odometer_miles = odometer_miles + speed * time,并且在选择获胜者之前有 500 英里的上限。我想出了一个骨架:

import random

class Car():


    def __init__(self):
       self.__name = [A,B,C,D,E,F,G,H,I,J,K,L,M,N,O,P,Q,R,S,T]
       self.__sponsor = [aa,bb,cc,dd,ee,ff,gg,hh,ii,jj,kk,ll,mm,nn,oo,pp,qq,rr,ss,tt]
       self.__vehicle = [1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20]

    def __str__(self):
       (when cap of 500 miles is reached)
           print "winner", driver,sponsor,vehicle


    def odometer(self):
       speed = random.randrange(1, 180)
       time = 60
       odometer_miles = speed * time


    def main():

         main()

我发布了代码以寻求指导,我的问题是;我是否在 python 中正确构建了我的代码以获得预期的结果。在这种情况下,什么胆量最熟练。

我正在使用 Python-3.x

4

2 回答 2

3

您可以使用以下功能逐列重新组合多个列表zip()

output = list(zip(list1, list2, list3))

如果您所做的只是循环每个组合,请直接在循环中使用它:

for vehicle, driver, sponsor in zip(self.__vehicle, self.__name, self.__sponsor):
    # do something with the three columns.
于 2013-08-17T17:03:02.270 回答
2

给定三个列表:

list1 = [1,2,3]               
list2 = ['a','b','c']                
list3 = ['aa','bb','cc'] 

zip()函数(或者最好可能izip())将组合它们,例如每个列表的第一项被分组,然后是第二项,依此类推:

>>> for item in zip(list1, list2, list3):
...     print item
... 
(1, 'a', 'aa')
(2, 'b', 'bb')
(3, 'c', 'cc')


# `izip` is more "memory efficient" (no a problem here thought)

>>> from itertools import izip
>>> for item in izip(list1, list2, list3):
...     print item
... 
(1, 'a', 'aa')
(2, 'b', 'bb')
(3, 'c', 'cc')

另一方面,如果您想要包含 list1 中的一项、list2 中的一项等的所有product()组合,您将需要:

>>> from itertools import product
>>> for item in product(list1, list2, list3):
...     print item
... 
(1, 'a', 'aa')
(1, 'a', 'bb')
(1, 'a', 'cc')
(1, 'b', 'aa')
(1, 'b', 'bb')
(1, 'b', 'cc')
(1, 'c', 'aa')
(1, 'c', 'bb')
(1, 'c', 'cc')
(2, 'a', 'aa')
(2, 'a', 'bb')
(2, 'a', 'cc')
(2, 'b', 'aa')
(2, 'b', 'bb')
(2, 'b', 'cc')
(2, 'c', 'aa')
(2, 'c', 'bb')
(2, 'c', 'cc')
(3, 'a', 'aa')
(3, 'a', 'bb')
(3, 'a', 'cc')
(3, 'b', 'aa')
(3, 'b', 'bb')
(3, 'b', 'cc')
(3, 'c', 'aa')
(3, 'c', 'bb')
(3, 'c', 'cc')

最后一个可能在您的特定情况下很有用,因为它可以让您模拟司机/车辆/赞助商的所有可能组合。

于 2013-08-17T17:48:25.757 回答