result = [ item.rsplit('.',1)[0] for item in data_list]
复制代码
将字典中的元素按照 键-值格式化,并终极利用 ;连接起来。
info = {
"name":"武沛齐",
"email":"xxx@live.com",
"gender":"男",
}
data_list = []
for k,v in info.items():
temp = "{}-{}".format(k,v)
data_list.append(temp)
result= ";".join(data_list)
result = ";".join( [ "{}-{}".format(k,v) for k,v in info.items()] )
复制代码
将字典按照键从小到大排序,然后在按照如下格式拼接起来。(微信支付API内部处置惩罚需求)
info = {
'sign_type': "MD5",
'out_refund_no': "12323",
'appid': 'wx55cca0b94f723dc7',
'mch_id': '1526049051',
'out_trade_no': "ffff",
'nonce_str': "sdfdffd",
'total_fee': 9901,
'refund_fee': 10000
}
data = "&".join(["{}={}".format(key, value) for key, value in sorted(info.items(), key=lambda x: x[0])])
print(data)
复制代码
看代码写效果
def func():
print(123)
data_list = [func for i in range(10)]
print(data_list) # [<function func at 0x000002269F4D1D30>, <function func at 0x000002269F4D1D30>, <function func at 0x000002269F4D1D30>, <function func at 0x000002269F4D1D30>, <function func at 0x000002269F4D1D30>, <function func at 0x000002269F4D1D30>, <function func at 0x000002269F4D1D30>, <function func at 0x000002269F4D1D30>, <function func at 0x000002269F4D1D30>, <function func at 0x000002269F4D1D30>]
data_list = [lambda x: x + i for i in range(10)] # [函数,函数,函数] i=9
v1 = data_list[0](100)
v2 = data_list[3](100)
print(v1, v2) # 109 109
复制代码
小高级
推导式支持嵌套
data = [ i for i in range(10)]
复制代码
data = [ (i,j) for j in range(5) for i in range(10)]
data = []
for j in range(5):
for i in range(10):
data.append((i, j))
data = [ [i, j] for j in range(5) for i in range(10)]
复制代码
# 一副扑克牌
poker_list = [ (color,num) for num in range(1,14) for color in ["红桃", "黑桃", "方片", "梅花"]]
poker_list = [ [color, num] for num in range(1, 14) for color in ["红桃", "黑桃", "方片", "梅花"]]
print(poker_list)
复制代码
烧脑面试题
def num():
return [lambda x: i * x for i in range(4)]
# 1. num()并获取返回值 [函数,函数,函数,函数] i=3
# 2. for循环返回值
# 3. 返回值的每个元素(2)
result = [m(2) for m in num()]
print(result) # [6,6,6,6]
复制代码
def num():
return (lambda x: i * x for i in range(4))
# 1. num()并获取返回值 生成器对象
# 2. for循环返回值
# 3. 返回值的每个元素(2)
result = [m(2) for m in num()] # [0,2,4,6 ]
print(result)
复制代码
总结
匿名函数,基于lambda表达式实现一行创建一个函数。一样平常用于编写简单的函数。
三元运算,用一行代码实现处置惩罚简单的条件判断和赋值。
生成器,函数中假如yield关键字
生成器函数
生成器对象
实行生成器函数中的代码
next
for(常用)
send
内置函数(36个)
推导式
常规操作
小高级操作
作业
看代码写效果
v = [lambda: x for x in range(10)]
print(v) # [<function <listcomp>.<lambda> at 0x000001A733E23280>, <function <listcomp>.<lambda> at 0x000001A7449C63A0>, <function <listcomp>.<lambda> at 0x000001A7449C6550>, <function <listcomp>.<lambda> at 0x000001A7452D5940>, <function <listcomp>.<lambda> at 0x000001A7452D59D0>, <function <listcomp>.<lambda> at 0x000001A7452D5A60>, <function <listcomp>.<lambda> at 0x000001A7452D5AF0>, <function <listcomp>.<lambda> at 0x000001A7452D5B80>, <function <listcomp>.<lambda> at 0x000001A7452D5C10>, <function <listcomp>.<lambda> at 0x000001A7452D5CA0>]
print(v[0]) # <function <listcomp>.<lambda> at 0x000001A733E23280>
print(v[0]()) # 9
复制代码
看代码写效果
v = [i for i in range(10,0,-1) if i > 5]
print(v) # [10, 9, 8, 7, 6]
复制代码
看代码写效果
data = [lambda x:x*i for i in range(10)]
print(data) # [<function <listcomp>.<lambda> at 0x0000029708933280>, <function <listcomp>.<lambda> at 0x00000297195063A0>, <function <listcomp>.<lambda> at 0x0000029719506550>, <function <listcomp>.<lambda> at 0x0000029719E15940>, <function <listcomp>.<lambda> at 0x0000029719E159D0>, <function <listcomp>.<lambda> at 0x0000029719E15A60>, <function <listcomp>.<lambda> at 0x0000029719E15AF0>, <function <listcomp>.<lambda> at 0x0000029719E15B80>, <function <listcomp>.<lambda> at 0x0000029719E15C10>, <function <listcomp>.<lambda> at 0x0000029719E15CA0>]
print(data[0](2)) # 18
print(data[0](2) == data[8](2)) # True
复制代码
请用列表推导式实现,踢出列表中的字符串,终极生成一个新的列表保存。
data_list = [11,22,33,"alex",455,'eirc']
new_data_list = [i for i in data_list if type(i) == int] # 请在[]中补充代码实现。