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...判断语句的站位,但是还是很容易出错,写的时候要注意。

猜你喜欢

转载自blog.csdn.net/lovetaozibaby/article/details/125869974
今日推荐