今天发现列表解析式真是一个神奇的东西

本文通过一个具体的案例,展示了如何使用Python中的列表解析和生成器来简化代码,并比较了不同实现方式的效果。作者从一个简单的for循环开始,逐步介绍了列表解析式的多种用法,包括嵌套使用以及与生成器的结合。

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

【原文】https://user.qzone.qq.com/2226038338/blog/1522123969

废话不多,直接说正事, 列表解析式真神奇。
有这样一个数据类型,列表嵌套元组
users = [('wangwu5''123'), ('zhaoliu5''123')]
us = [ ]
for user in users:
account,pwd = user
us.append(User(account=account,pwd=pwd))
本来我用了这种最常见的for循环来遍历他,取得每一项的值,生成模型类的实例来传给sqlalchemy引擎 写入数据库,实现后,我觉得这样写太普通,能不能写个高端大气上档次(装13)的写法呢?自然就想到了列表解析式这东西,这不写不要紧,一写就引发了一桩惊天大案。
来吧,列表解析式:
# us = [User(account=user[0], pwd=user[1]) for user in users]
试验了一下,果然可以,我python牛x!!!
不过,我上边可是带着#注释符的,这是干嘛呢,我又想到了另外一种装13的东西,生成器,没错就是他
us = (User(account=user[0], pwd=user[1]) for user in users)
拿过去一测试,我的天也可以,,再次高呼 python 666!
完了呢,我又开始不消停了,我想到了另一种方法,列表解析式能不能嵌套呢,我去试试看,这一试果不其然又让我猜中了:
# us = [User(account=account, pwd=pwd) for account, pwd in [user for user in users]] 
口号走起,人生苦短,我用python!!!
然而事情还没完,既然列表解析式能嵌套,那么生成器能不能嵌套呢?俺去试试看,。。。我只想说,我联想能力还是很强的(自吹一波)!
# us = (User(account=account, pwd=pwd) for account, pwd in (user for user in users))
我的个天,来吧,换个口号喊一波,人生几何,python当歌!!
嗯,原本觉得这样事情就算完了,但是呢,我突然有一个大胆的想法,既然生成器和列表解析式这么牛x,让他俩结合一下行不行呢!啊, 这次我不吹了,直接告诉你们,竟然也可以!
# us = [User(account=account, pwd=pwd) for account, pwd in (user for user in users)]
# us = (User(account=account, pwd=pwd) for account, pwd in [user for user in users])

嗯,我的个天,咱python不是吹,是真的牛x啊!最后把这几个写法全部罗列出来,python威武霸气!

遍历users,7种方法都可以

# us = [User(account=user[0], pwd=user[1]) for user in users]
us = (User(account=user[0], pwd=user[1]) for user in users)
# us = [User(account=account, pwd=pwd) for account, pwd in [user for user in users]]
# us = [User(account=account, pwd=pwd) for account, pwd in (user for user in users)]
# us = (User(account=account, pwd=pwd) for account, pwd in [user for user in users])
# us = (User(account=account, pwd=pwd) for account, pwd in (user for user in users))

# us = []
# for user in users:
# account,pwd = user
# us.append(User(account=account,pwd=pwd))
就是这么一个for循环,惹出一桩惊天血案!来吧,life is short , we need python!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值