iOS开发人员如何学习Python编程12-函数3

104 阅读2分钟

这是我参与11月更文挑战的12天,活动详情查看:2021最后一次更文挑战

推导式

Python中有一种特有的语法,就是推导式(又称为解析式)

推导式是可以从一个数据序列构建另一个新的数据序列的结构体。

共有三种推导:

  • 列表(list)推导式
  • 字典(dict)推导式
  • 集合(set)推导式

列表推导式

基本语法:

# out_exp_res: 列表生成元素表达式,可以是有返回值的函数。
# for out_exp in input_list:迭代input_list将out_exp传入out_exp_res表达式中。
[out_express for out_express in input_list]

生成一个[0,1,4,9,16]的列表:

odd_list = [i*i for i in range(5)]
print(odd_list)

当列表推导式还需要满足某条件下才输出表达式时,
可以通过以下语法规范实现:

# out_exp_res: 列表生成元素表达式,可以是有返回值的函数。
# for out_exp in input_list:迭代input_list将out_exp传入out_exp_res表达式中。
if out_condition:  根据条件过滤哪些值可以。
list = [out_exp_res for out_exp in input_list if out_condition]

li列表中小于0的元素开方并且保存到新列表中:

li = [6, 2, 6, 7, -15, 8, -17, -10, -15, -4]
new_li = [i**2 for i in li if i<0]
print(new_li)

嵌套循环推导式:

[i for row in matrix for i in row]

生成列表li['1a', '1b', '1c', '2a', '2b', '2c', '3a', '3b', '3c']

li = [i+j for i in "123" for j in "abc"]

字典推导式

基本语法:

# out_exp_key: 生成key表达式,可以是有返回值的函数。
# out_exp_value: 生成value表达式,可以是有返回值的函数。
# for out_exp in input_list:迭代input_list将out_exp传入out_exp_res表达式中。
# if out_condition:根据条件过滤哪些值可以。
dic ={out_exp_key: out_exp_value, for out_exp in input_list if out_condition}

生成字典,字典的key值为列表li的元素索引,字典的value值为列表的元素:

li = ["age","name","gender"]
dic = {li.index(i):i for i in li}
print(dic)

集合推导式

基本语法:

# out_exp_res: 列表生成元素表达式,可以是有返回值的函数。
# for out_exp in input_list: 迭代input_list将out_exp传入out_exp_res表达式中。
# if out_condition: 根据条件过滤哪些值可以。
set={out_exp_res for out_exp in input_set if out_condition}

随机生成10个1-100之间的元素,并且去重:

s1 = {random.randint(1,100) for i in range(10)}
print(s1)
print(len(s1)

⚠️注意Python中没有元祖推导式。