三元表示式 生成式和函式遞迴

2022-03-18 22:09:21 字數 3094 閱讀 3922

x=1

y=2res=x if x > y else y

print(res)

res=111111 if 'egon' == 'egon' else 2222222222

print(res)

#三元表示式可直接做返回值

def func(x,y):

if x > y:

return x

else:

return y

def func(x,y):

return x if x>y else y

res=func(1,2)

print(res)

#需求:將l中的帶有dsb欄位的元素新增到新的列表中

l = ['alex_dsb', 'lxx_dsb', 'wxx_dsb', "xxq_dsb", 'egon']

new_l=

for name in l:

if name.endswith('dsb'):

new_l=[name for name in l if name.endswith('dsb')]

new_l=[name for name in l]

print(new_l)

# 把所有小寫字母全變成大寫

new_l=[name.upper() for name in l]

print(new_l)

# 把所有的名字去掉字尾_dsb

new_l=[name.replace('_dsb','') for name in l]

print(new_l)

keys=['name','age','gender']

dic=

print(dic)

items=[('name','egon'),('age',18),('gender','male')]

res=

print(res)

keys=['name','age','gender']

set1=

print(set1,type(set1))

強調:

直接使用生成器表示式建立乙個生成器物件,在沒有next之前,內部沒有值

g=(i for i in range(10) if i > 3)

#!!!!!!!!!!!強調!!!!!!!!!!!!!!!

#此刻g內部乙個值也沒有

print(g,type(g))

print(g)

print(next(g))

print(next(g))

#計算檔案中的字數總和

with open('筆記.txt', mode='rt', encoding='utf-8') as f:

# 方式一:

# res=0

# for line in f:

# res+=len(line)

# print(res)

# 方式二:

# res=sum([len(line) for line in f])

# print(res)

# 方式三 :效率最高

# res = sum((len(line) for line in f))

# 上述可以簡寫為如下形式

res = sum(len(line) for line in f)

print(res)

函式的遞迴呼叫:

​ 是函式巢狀呼叫的一種特殊形式

具體是指:

在呼叫乙個函式的過程中又直接或者間接地呼叫到本身

#直接呼叫本身

def f1():

print('是我是我還是我')

f1()

f1()

#間接接呼叫本身

def f1():

print('===>f1')

f2()

def f2():

print('===>f2')

f1()

#一段**的迴圈執行的方案有兩種

#方式一:while、for迴圈

while true:

print(1111)

print(2222)

print(3333)

#方式二:遞迴的本質就是迴圈:

def f1():

print(1111)

print(2222)

print(3333)

f1()

f1()

​ 遞迴呼叫不應該無限地呼叫下去,必須在滿足某種條件下結束遞迴呼叫

n=0

while n < 10:

print(n)

n+=1

def f1(n):

if n == 10:

return

print(n)

n+=1

f1(n)

f1(0)

age(5) = age(4) + 10

age(4) = age(3) + 10

age(3) = age(2) + 10

age(2) = age(1) + 10

age(1) = 18

def age(n):

if n == 1:

return 18

return age(n-1) + 10

res=age(5)

print(res)

l=[1,2,[3,[4,[5,[6,[7,[8,[9,10,11,[12,[13,]]]]]]]]]]

def f1(list1):

for x in list1:

if type(x) is list:

# 如果是列表,應該再迴圈、再判斷,即重新執行本身的**

f1(x)

else:

print(x)

f1(l)

三元表示式,生成式

條件,條件成立返回值,不成立返回值 deffunc x,y if x y return x else return y func 1,2 等同於三元表示式 條件成立就返回左邊的值,不成立就是右邊的值 x 1 y 2 res x if x y else y print res 2def func x,...

三元表示式 生成式 匿名函式

def max2 x,y if x y return x else return y res max2 10,20 x 10 y 20 res x if x y else y print res res ok if false else no print res 1 列表生成式 l for i in...

三元表示式,生成式,生成器表示式

使用函式來寫 defmax2 x,y if x y return x else return y res max2 3,4 print res 4?使用三元表示式 x 3 y 4 res x if x y else y print res 3,4 4 函式加三元表示式 defmax2 x,y ret...