Python语法糖

wang 发布于 2025-11-11 5355 次阅读


推导式与判断

推导式

原始写法:
resutl = []
for i in range(1,10+1): if i % 2 == 0:
        resutl.append(i*2)
print(resutl)

列表推导式:
tt = [i*2for i in range(1,10+1)if i % 2 ==0]
print(tt)

判断

a ,b = 10 ,20
print("a大"if a>b "b大" else "相等" a==b "b大")

判断进阶

代码高尔夫评分:92/100 ⛳

for i in range(1,3+1):
    score = int(input(
        "请输入您的成绩:"
    ))

    print("优秀\n" if score>=98 else ("继续努力!\n" if score>=90  else "废物废物!\n") )

列表推导式 + 嵌套判断

y3 = (1, 2, 3, 4, 5,1,2,3,'11','22','33','11','22')
[list1.append(i) for i in y3 if i not in list1]
print(list1)


y3 = ((1, 2, 3, 4, 5,1,2,3),('11','22','33','11','22'))

集合推导式 + 双重for循环

理解 *: 表示 解包

初版
y3 = (1, 2, 3, 4, 5,1,2,3,'11','22','33','11','22')
list1 = []
 for i in y3:
    for e in i:
        list1.append(e)
 print(list1)

推导式-列表

list1 = [{e for i in y3 for e in i}]
>>[{1, 2, 3, 4, 5, '33', '11', '22'}]

list1 = [*{e for i in y3 for e in i}]
>>[1, 2, 3, 4, 5, '33', '11', '22']

推导式-集合

list1 = [*{e for i in y3 for e in i}]
print(list1)

lambda表达式(匿名函数)

lamdba 参数1,参数2 : 输出(return的结果)


#原版
# def f (x):
#     return print(x*x)
#使用lamdba表达式
f = lambda x : x*x
print(f(4))

如果加上判断就是
f = lambda x : x print('This is a 0') if % 2 ==0 else print('This is a 1')




带参数的lamdba表达式:
TwoNumberSum = lambda x,y:(x+y)
print(TwoNumberSum(10, 20))


#带默认参数的lambda表达式
func = lambda a=10,b=20,c=30 :(a+b+c)
print(func())


# 带if判断(三目运算符)的lambda表达式
func_2 = lambda a,b : a if a > b else b
func_2(1,2)

练习笔记

students = [
    {'name': 'Tom', 'age': 20},
    {'name': 'Rose', 'age': 19},
    {'name': 'Jack', 'age': 22}
]

lamdba的格式:
# 按name值升序排列
students.sort(key=lambda x:x['name'])
print(students)
# 按name值降序排列
students.sort(key=lambda x:x['name'],reverse=True)
print(students)

# 按age值升序排列
students.sort(key=lambda x:x['age'])
print(students)

#原有的代码格式
def get_name(student):
    """返回学生的姓名"""
    return student['name']

字典的展开

把对象封装成字典

class Student(object):
    def init(self,name,age):
        self.name = name
        self.age = age
s_one = Student('zhou_jie_lun',12)
print(s_one.__dict__)

字典的抽取

把字典从对象中抽出来

class Student(object):
    def __init__(self,name,age):
        self.name = name
        self.age = age
d = {"name": 'zhou_jie_lun', 'age': 11}
s_two = Student(**d)
print(s_two.name)
print(s_two.age)

一名热爱海贼的AI开发者
最后更新于 2025-11-11