Python | 缩写for循环和if else语句的办法

简介

力扣第2129题:将标题首字母大写,第一版本的解答为:

class Solution:
    def capitalizeTitle(self, title: str) -> str:
        return " ".join([li.capitalize() for li in title.split(" ") if len(li)>2 else li.lower()])

结果:报错。
然后意识到如何嵌套了if else语句到for循环中,缩写似乎和直接用for循环不太一样。
主要区别在位置上:完备的语句写在for循环前,只有if语句时写在for循环后。

改写后为:

class Solution:
    def capitalizeTitle(self, title: str) -> str:
        return " ".join([li.capitalize() if len(li)>2 else li.lower() for li in title.split(" ")])

用法

  1. 如果for循环中只有if语句,可以直接写在for循环后面,如下:
s = [1,2,3,4,5]
res = [i for i in s if i>2]  # res=[3,4,5]

该语句等同于:

s = [1,2,3,4,5]
res = []
for i in s:
	if i >2:
		res.append(i)
  1. 但如果将if...else...语句补完,必须要写在for循环前:
s = [1,2,3,4,5]
res = [i if i>2 else 0 for i in s]  # res=[0,0,3,4,5]

该语句等同于:

s = [1,2,3,4,5]
res = []
for i in s:
	if i >2:
		res.append(i)
	else:
		res.append(0)

python的这种列表内的缩写可以节省for循环和if...else...判断语句的站位,但是还是很容易出错,写的时候要注意。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值