当前位置: 首页 > 后端技术 > Python

掌握《Python列表理解》需要知道的9件事你知道吗?

时间:2023-03-26 11:51:57 Python

作者|核心阅读来源|Pexels越来越多的人开始学习Python,它已经成为最流行的编程语言之一,几乎所有领域都会出现这种情况。Web开发、科学计算,当然还有人工智能。无论你想用python做什么,都免不了要学习Python的数据结构、变量函数声明、条件语句、控制流等基本概念。一个重要的“Pythonic”特性是列表理解——一种创建列表的简洁方法,这让许多初学者感到困惑。听说过但不知道是什么?没关系,本文提供入门级的Python列表理解学习。为了使它更直观,本文列出了关于列表推导式你应该知道的九件事,包括语法和各种用例。1.基本语法最基本的列表理解有以下语法。如前所述,它可以方便某些事情,例如创建列表。扩展形式通常表示为for循环,其中可迭代对象的每个项目都运行表达式中指定的某些操作。#列表推导[iteminiterable的表达式]#iteminiterable的扩展形式:expression2.创建列表不用说,最流行的用法是简洁地创建列表。假设您不知道列表理解是什么,您可能会在创建列表时执行类似的操作。首先声明一个空列表。然后在for循环中,将每个项目追加到列表中。>>>pets=(bird,snake,dog,turtle,cat,hamster)>>>uppercased_pets=[]>>>forpetinpets:...uppercased_pets.append(pet.upper())...>>>uppercased_pets[BIRD,SNAKE,DOG,TURTLE,CAT,HAMSTER]查看由GitHub用?托管的rawpets.py如基本语法部分所述,for循环语句可以“压缩”成一行-即使用A列表仅需一行代码的理解,我们就可以通过遍历原始列表来方便地创建一个列表。>>>pets=(bird,snake,dog,turtle,cat,hamster)>>>uppercased_pets=[pet.upper()forpetinpets]>>>uppercased_pets[BIRD,SNAKE,DOG,TURTLE,CAT,HAMSTER]3。过滤条件语句有时,在使用列表理解创建列表时,您不想包含现有列表中的所有项目。在这种情况下,就需要一个条件语句来过滤掉现有列表中不满足某个条件的项。相应的列表理解具有以下语法。#带有条件语句的列表理解[expressionforiteminiterableifsome_condition]#expandedformforiteminiterable:ifsome_condition:expressionviewrawlist.pyhostedwith?byGitHub以下是上述用法的示例:>>>primes=[2,3,5,7,11,13,17,19,23,29]>>>squared_primes=[x*xforxinprimesifx%10==3]>>>squared_primes[9,169,529]如果你有更复杂的条件评估,你甚至可以使用函数。>>>defhas_four_legs(pet):...returnpetin(pig,dog,turtle,hamster,cat)...>>>pets=(bird,snake,dog,turtle,cat,hamster)>>>four_legs_pets=[pet.capitalize()forpetinpetsifhas_four_legs(pet)]>>>four_legs_pets[Dog,Turtle,Cat,Hamster]查看rawhas_four_legs.py由GitHub4以?托管。条件分配有时,不想从原始列表项目中过滤掉。相反,您想通过评估条件来确定要使用的表达式。下面给出语法及其用法,并相应地解释语法。#基本语法[expression0ifsome_conditionelseexpression1foriteminiterable]#语法解释:与列表推导式的基本语法:[expressionforiteminiterable]相比,我们可以仔细考虑一下(expression0ifsome_conditionelseaexpressionwhole1)构成通用格式表达式的部分>>>max_value=10>>>numbers=(7,9,11,4,3,2,12)>>>ceiling_numbers0=[numberifnumber<=max_valueelsemax_valuefor数字中的数字]>>>ceiling_numbers0[7,9,10,4,3,2,10]>>>ceiling_numbers1=[(numberifnumber<=max_valueelsemax_value)fornumberinnumbers]>>>ceiling_numbers1[7,9,10,4,3,2,10]查看由GitHub5用?托管的rawsyntax.py。替换map()在某些情况下,您可能会看到人们使用map()来创建列表。具体来说,map()函数具有以下语法和其基本用法的示例。请注意,map()函数返回一个可迭代对象,因此您可以使用list()函数从该可迭代对象生成一个列表。#map()返回一个迭代器对象map(function,iterable)>>>pets=(bird,snake,dog,turtle,cat,hamster)>>>uppercased_pets=list(map(str.upper,pets))>>>uppercased_pets[BIRD,SNAKE,DOG,TURTLE,CAT,HAMSTER]查看由GitHub以?托管的rawmap.py如前所示,map()函数可以替换为列表理解。>>>pets=(bird,snake,dog,turtle,cat,hamster)>>>uppercased_pets=[pet.upper()forpetinpets]>>>uppercased_pets[BIRD,SNAKE,DOG,TURTLE,CAT,HAMSTER]6.嵌套列表理解假设您在下面的代码片段中有一个元组,并且您想要创建一个新的条目列表,使得条目是元组中所有数字的平方。在这种情况下,可以使用嵌套列表理解,其语法如下所示。#嵌套列表理解的基本语法[expressionforsublistinouter_listforiteminsublist]#expressionforsublistinouter_list:foriteminsublist:expression>>>nested_numbers=((1,4,7,8),(2,3,5))>>>squares=[x*xfornumbersinnested_numbersfornumbersinnested_numbersfornumbersinnumbers]>>>squares[1,16,49,64,4,9,25]查看rawnested.list.py由GitHub由?托管虽然技术上嵌套的列表理解可以有多个级别,但为了确保可读性,不建议超过两个级别。7.使用海象运算符Python3.8中的一个新特性是为赋值表达式引入了海象运算符(:=)。假设从字母列表中抽取十次,创建的列表将仅包括这些图中的元音。下面显示了如何在列表理解中使用海象运算符。具体来说,在下面的示例中,评估从字母表中随机抽取的一个字母,看它是否是元音,如果是,则将其分成列表理解表达式可访问的字母。>>>letters=list(这是生成字母列表)>>>letters[t,h,i,s,,i,s,,t,o,,p,r,o,d,u,c,e,,a,,l,i,s,t,,o,f,,l,e,t,t,e,r,s]>>>导入随机>>>元音=[letter.upper()for_inrange(0,10)if(letter:=random.choice(letters))inlist(aeoui)]>>>vowels[I,O,O,O,O]viewrawletters.py由?托管GitHub8.集合推导式虽然列表推导式为很多人所熟知,但推导式也可以在创建集合时使用。基本语法及其用法如下所示。一个主要区别是我们使用大括号而不是方括号。当然,按照设计,集合中的元素不能有重复项,而列表则允许重复项。请注意,条件语句也可以用于集合推导中。#setcomprehension{expressionforiteminiterable}>>>numbers=(1,34,5,8,10,12,3,90,70,70,90)>>>unique_even_numbers={numberfornumberin的语法numbersifnumber%2==0}>>>unique_even_numbers{34,70,8,10,12,90}查看rawset.comprehension.py由GitHub9以?托管。字典推导式知道列表和集合推导式,对于Python字典推导式也不会让你感到惊讶。下面的代码片段显示了基本语法及其用法。#字典理解的语法{key_expression:value_expressionforiteminiterable}>>>words=(python,is,a,big,snake)>>>len_words={word:len(word)forwordinwords}>>>len_words{python:6,is:2,a:1,big:3,snake:5}>>>len_words_p={word:len(word)forwordinwordsifword.startswith(p)}>>>len_words_p{python:6}viewrawdict.pyhostedwith?byGitHub总结本文回顾了列表推导的基本语法及其在各种场景中的用法。除了列表理解之外,还讨论了集合和字典理解。依靠这些理解有助于在Python中创建基本的集合数据类型,使它们更具可读性。更多行业干货持续为您分享,您可以随时关注我们!(1)获取更多优质内容,可以前往:当前疫情有所缓和,也是提升自我、为未来蓄力的好时机——蓄势待发!(2)搜索CDA小程序,手机端随时随地浏览最新资讯和优质课程:

猜你喜欢