阅读 112

python推导式的使用方法实例

这篇文章主要给大家介绍了关于python推导式的使用方法,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧

前言

推导式提供了更简洁高效的方法来生成序列而又不失代码的可读性。

定义: 推导式是 Python 里很有用的一个特性,它可以用一行代码就可以创建一个新的序列(比如:列表,集合,字典等等)。通过这个性能,不仅可以少写很多代码,而且性能上也更快。

Python 里有四种推导式:

  • 列表推导式(List Comprehensions)

  • 字典推导式(Dictionary Comprehensions)

  • 集合推导式(Set Comprehensions)

  • 生成器推导式(Generator Comprehensions)

一、列表推导式(List Comprehensions)

假如你有一个列表,你想去掉该列表中的所有负数,那通常的做法使用 for 循环

1
2
3
4
5
6
numbers=[1,-2,3,-4,5]
new_nums=[]
for num in numbers:
 if num>0:
  new_nums.append(num)
print(new_nums)

输出结果:

python

但如果我们用列表推导式来实现,那么这个过程就短得多,只需要一行代码:

1
2
3
4
numbers=[1,-2,3,-4,5]
new_nums=[num for num in numbers if num>0]
 
print(new_nums)

输出结果同上。

列表推导式的结构:

1
output_list = [expression for var in input_list if condition]

这里的 if condition 语句并不是必须有的。

二、字典推导式(Dictionary Comprehensions)

跟列表推导式一样,通过同样方式生成字典的方法,就是字典推导式。

假如你想从一个全是数字的列表来创建一个字典,列表里的数字作为 key, 数字的的字符串值作为 value, 然后再某个限制条件,最终获得你想要的字典数据:

1
2
3
4
5
6
7
8
nums=[1,2,3,4,5,6,7,8]
 
dict={}
for num in nums:
 if num %2 == 0:
  dict[num] = str(num)
 
print(dict)

输出结果:

python

如果我们使用字典推导式,就会简洁的多:

1
2
3
4
nums=[1,2,3,4,5,6,7,8]
dict={num:str(num) for num in nums if num % 2 == 0}
 
print(dict)

输出结果同上。

字典推导式的模板:

1
{key:value for (key,value) in dict if key,value satisfy condition}

三、集合推导式(Set Comprehensions)

集合推导式跟列表推导式差不多。就比如我们要把一个全是数字的列表中的奇数组成一个集合,用 for 循环的话:

1
2
3
4
5
6
7
8
numbers=[1,2,3,4,5,6,7,8]
filtered_nums=set()
 
for num in numbers:
  if num %2 == 0:
   filtered_nums.add(num)
 
print(filtered_nums)

输出结果:

python

如果我们使用集合表达式来表示:

1
2
3
4
numbers=[1,2,3,4,5,6,7,8]
filtered_nums={num for num in numbers if num %2 == 0}
 
print(filtered_nums)

输出结果同上。

注意: 集合推导式除了是使用 {} 外,其他形式都跟列表推导式一样。

四、生成器推导式(Generator Comprehensions)

生成器推导式(或叫生成器表达式),其结构也跟列表表达式相似。

例如我们将数字列表中各项平方运算并排除奇数项:

1
2
3
4
5
6
7
8
9
10
def square_even(numbers):
  for number in numbers:
   if number % 2 == 0:
     yield (number * number)
 
numbers=[1,2,3,4,5,6]
square_numbers=square_even(numbers)
 
for number in square_numbers:
  print(number)

输出结果:

python

使用生成器推导式显示为:

1
2
3
4
5
numbers=[1,2,3,4,5,6]
square_numbers=(num *num for num in numbers if num % 2 ==0)
 
for number in square_numbers:
  print(number)

输出结果同上。

注意: 生成器推导式是使用 () ,其他基本结构跟列表推导式一样。

总结

到此这篇关于python推导式的使用方法的文章就介绍到这了


文章分类
后端
版权声明:本站是系统测试站点,无实际运营。本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 XXXXXXo@163.com 举报,一经查实,本站将立刻删除。
相关推荐