栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Python

Python zip()函数个人遇到的小问题——当输入的列表个数不固定的时候如何解决

Python 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

Python zip()函数个人遇到的小问题——当输入的列表个数不固定的时候如何解决

最近在将zip函数用于处理多个迭代器同时遍历的过程中,遇到了如下的问题:

首先,各大教程网站中,给出的zip()函数的用法是,定义了迭代器对象x,y,那么通过zip函数可以同时遍历x,y。这会给予一种错误的理解就是说,在写代码的过程中,zip()函数的输入一定是写死的,不能根据外部参数的设计,改变其编码的迭代器数量。比如:

class_1=[1,2,3,4,5]
class_2=[6,7,8,9,10]

for i in zip(class_1,class_2):
    print(i[0])
    print(i[1])

#或者是
class_1=[1,2,3,4,5]
class_2=[6,7,8,9,10]
class_3=[11,12,13,14,15]

for i in zip(class_1,class_2,class_3):
    print(i[0])
    print(i[1])
    print(i[2])

可以试想,如果是当前的编写方式,zip函数的输入是不灵活的,当后续想要增加班级列表的时候,需要重写代码,又或者是班级列表很多时,需要大量的复制粘贴,并且容易出错。

为了解决这一问题,我考虑到日常使用的 “*”操作符,比如def function_1(*args)的用途

可以将上述的代码修改为:

class_1=[1,2,3,4,5]
class_2=[6,7,8,9,10]
class_3=[11,12,13,14,15]
class_4=[16,17,18,19,20]
#假定以上是数据库中的班级信息

class_list=obtain_class_data_from_database()
class_num=len(class_list)
# 该代码表示从外部接口obtain_class_data_from_database()获取当前学校班级的列表


for i in zip(*class_list):
    for c in range(class_num):
        print(i[c])

可以看到,这种编写方式可以很容易的适应外部输入的迭代器数量的变化

 

 

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/1008596.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号