1.假设有2个列表:均存储的是单一元素
A = ['a1','a2','a3','a4','a5']
B = ['b1','b2','b3','b4','b5']
test = [t for t in zip(A,B)]
print(test) # [('a1', 'b1'), ('a2', 'b2'), ('a3', 'b3'), ('a4', 'b4'), ('a5', 'b5')]
2.假设有2个列表:存储若干元组,元组中的元素类型相同
A = [(1,2),(3,4)]
B = [(5,6),(7,8)]
test = [t for t in zip(A,B)]
print(test) # [((1, 2), (5, 6)), ((3, 4), (7, 8))]
3.假设有2个列表:存储若干列表,列表中的元素类型相同
A = [[1,2],[3,4]]
B = [[5,6],[7,8]]
test = [t for t in zip(A,B)]
print(test) # [([1, 2], [5, 6]), ([3, 4], [7, 8])]
4.假设有2个列表:存储若干元组,元组中的元素类型相同,但存储的个数不同
A = [(1,2),(3,4)]
B = [(5),(7)]
test = [t for t in zip(A,B)]
print(test) # [((1, 2), 5), ((3, 4), 7)]
5.假设有2个列表:一个存储若干元组,一个存储若干列表,元素类型相同,存储个数相同
B = [[5,6],[7,8]]
A = [(1,2),(3,4)]
test = [t for t in zip(A,B)]
print(test) # [((1, 2), [5, 6]), ((3, 4), [7, 8])]
6.假设有2个列表:一个存储若干元组,一个存储若干列表,列表中元素的类型不同,存储的个数也不同
A = [(1,2),(3,4)]
B = [[5,'b1','b2'],[7,'b3']]
test = [t for t in zip(A,B)]
print(test) # [((1, 2), [5, 'b1', 'b2']), ((3, 4), [7, 'b3'])]
7.假设只有一个列表 (没啥意义)
A = ['a1','a2','a3','a4','a5']
test = [t for t in zip(A)]
print(test) # [('a1',), ('a2',), ('a3',), ('a4',), ('a5',)]
8.假设有2个列表 ,但长度不同
A = ['a1','a2','a3','a4','a5']
B = ['b1','b2','b3','b4']
test = [t for t in zip(A,B)]
print(test) # [('a1', 'b1'), ('a2', 'b2'), ('a3', 'b3'), ('a4', 'b4')]
结论:不管输入到zip()中的列表,存储的元素个数或类型是否相同,均能把各个列表中相同的位置处的值进行组合;如果多个列表间长度不相同,则以最短的那个为准;
这里的列表通常指的是一个复合列表,即一个列表中包含了若干个列表或元组,比如:
A = [1,2,3,4]
B = [5,6,7,8]
C = []
C.append(A)
C.append(B)
这里的C就是一个复合列表
现有A,B,2个列表,以及加入了A,B两个列表的复合列表C,
A = ['a1','a2','a3','a4','a5'] # B = ['b1','b2','b3','b4','b5'] C = [] C.append(A) C.append(B)注意:zip((A,B)) 与 zip(*(A,B))、zip(*C)的结果
从下面的代码可以看出,zip(*(A,B)) 与 zip(*C)的结果是一样的
对于 zip(*(A,B))可以理解为:先将A,B2个列表给取出来,然后再将其相对应位置上的元素组合
对于 zip(*C):道理类同zip(*(A,B))
对于 zip((A,B)):这里是A,B作为一个整体,并没有把A,B给分别取出来再组合,与上述第7个案列相同;
A = ['a1','a2','a3','a4','a5']
B = ['b1','b2','b3','b4','b5']
C = []
C.append(A)
C.append(B)
#[(['a1', 'a2', 'a3', 'a4', 'a5'],), (['b1', 'b2', 'b3', 'b4', 'b5'],)]
test = [t for t in zip((A,B))]
# [('a1', 'b1'), ('a2', 'b2'), ('a3', 'b3'), ('a4', 'b4'), ('a5', 'b5')]
test1 = [t for t in zip(*(A,B))]
# [('a1', 'b1'), ('a2', 'b2'), ('a3', 'b3'), ('a4', 'b4'), ('a5', 'b5')]
test2 = [t for t in zip(*(C))]
final = [A,B,C,D,E...]
结论:zip(*(final)):把final中的A,B,C,D,E等多个列表给单独取出来,然后进行zip(A,B,C,D,E....)