python中zip的应用

本文介绍了Python中zip()函数的使用方法,并通过实例展示了如何将多个列表组合成元组列表,以及如何对这些组合进行操作,包括不同长度列表的处理方式。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

Example 1: Python zip()
用zip将两个列表组合打包成tuple,然后可以放进set或者list里

number_list = [1, 2, 3]
str_list = ['one', 'two', 'three']

# No iterables are passed
result = zip()

# Converting iterator to list
result_list = list(result)
print(result_list)

# Two iterables are passed
result = zip(number_list, str_list)

# Converting iterator to set
result_set = set(result)
print(result_set)

#Output-------------------------------------------
[]
{(2, 'two'), (3, 'three'), (1, 'one')}

Example 2: Different number of iterable elements

numbersList = [1, 2, 3]
str_list = ['one', 'two']
numbers_tuple = ('ONE', 'TWO', 'THREE', 'FOUR')

# Notice, the size of numbersList and numbers_tuple is different
result = zip(numbersList, numbers_tuple)
# 维数不同时,取最短的序列然后两序列从前到后组合
# Converting to set
result_set = set(result)
print(result_set)

result = zip(numbersList, str_list, numbers_tuple)
# 维数不同时,取最短的序列然后两序列从前到后组合
# Converting to set
result_set = set(result)
print(result_set)

#Output--------------------------------------------------------------
{(2, 'TWO'), (3, 'THREE'), (1, 'ONE')}
{(2, 'two', 'TWO'), (1, 'one', 'ONE')}

Example 3: Unzipping the Value Using zip()

coordinate = ['x', 'y', 'z']
value = [3, 4, 5]

result = zip(coordinate, value)
result_list = list(result)
print(result_list)

c, v =  zip(*result_list) # 加*进行解压,将每个元组拆开按照维度解压成新的元组
print('c =', c)
print('v =', v)

# Output --------------------------------------------------------------
[('x', 3), ('y', 4), ('z', 5)]
c = ('x', 'y', 'z')
v = (3, 4, 5)

实际应用:

self.weights = [np.random.randn(y, x)
                for x, y in zip(sizes[:-1], sizes[1:])]
# 对size=[1,2,3,4,5,6,7],每次迭代的x从第一位到倒数第二位,y从第二位到倒数第一位,也就是
# 第一轮时 x=1, y=2; 第二轮时 x=2, y=3 .........

for b, w in zip(self.biases, self.weights):
#每次迭代的b为biases第n个,w为weights的第n个

temp = list(zip(x_train, y_train)) # 形成元组的list [(x1,y1) , (x2,y2) ...........] 
random.shuffle(temp) #  打乱list,也就是把里边的元组位置变换
x_train[:], y_train[:] = zip(*temp)  
# 对list进行解压,解压成两个list,如果用a ,b = zip(*temp) 则会解压成两个tuple


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值