如何正确的在python中使用推导式
本文章向大家介绍如何正确的在python中使用推导式,主要包括如何正确的在python中使用推导式的使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。
python可以做什么
Python是一种编程语言,内置了许多有效的工具,Python几乎无所不能,该语言通俗易懂、容易入门、功能强大,在许多领域中都有广泛的应用,例如最热门的大数据分析,人工智能,Web开发等。
前言
推导式提供了更简洁高效的方法来生成序列而又不失代码的可读性。
定义: 推导式是 Python 里很有用的一个特性,它可以用一行代码就可以创建一个新的序列(比如:列表,集合,字典等等)。通过这个性能,不仅可以少写很多代码,而且性能上也更快。
Python 里有四种推导式:
列表推导式(List Comprehensions)
字典推导式(Dictionary Comprehensions)
集合推导式(Set Comprehensions)
生成器推导式(Generator Comprehensions)
一、列表推导式(List Comprehensions)
假如你有一个列表,你想去掉该列表中的所有负数,那通常的做法使用 for 循环
numbers=[1,-2,3,-4,5]new_nums=[]for num in numbers: if num>0: new_nums.append(num)print(new_nums)
输出结果:
但如果我们用列表推导式来实现,那么这个过程就短得多,只需要一行代码:
numbers=[1,-2,3,-4,5]new_nums=[num for num in numbers if num>0]print(new_nums)
输出结果同上。
列表推导式的结构:
output_list = [expression for var in input_list if condition]
这里的 if condition 语句并不是必须有的。
二、字典推导式(Dictionary Comprehensions)
跟列表推导式一样,通过同样方式生成字典的方法,就是字典推导式。
假如你想从一个全是数字的列表来创建一个字典,列表里的数字作为 key, 数字的的字符串值作为 value, 然后再某个限制条件,最终获得你想要的字典数据:
nums=[1,2,3,4,5,6,7,8]dict={}for num in nums: if num %2 == 0: dict[num] = str(num)print(dict)
输出结果:
如果我们使用字典推导式,就会简洁的多:
nums=[1,2,3,4,5,6,7,8]dict={num:str(num) for num in nums if num % 2 == 0}print(dict)
输出结果同上。
字典推导式的模板:
{key:value for (key,value) in dict if key,value satisfy condition}
三、集合推导式(Set Comprehensions)
集合推导式跟列表推导式差不多。就比如我们要把一个全是数字的列表中的奇数组成一个集合,用 for 循环的话:
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)
输出结果:
如果我们使用集合表达式来表示:
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)
生成器推导式(或叫生成器表达式),其结构也跟列表表达式相似。
例如我们将数字列表中各项平方运算并排除奇数项:
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)
输出结果:
使用生成器推导式显示为:
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中使用推导式的文章就介绍到这了,更多相关的内容请搜索编程网以前的文章或继续浏览下面的相关文章希望大家以后多多支持编程网!
免责声明:
① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。
② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341