python 列表推导式

1、列表推导式书写形式:

  [表达式  for  变量 in  列表]   或者 [表示式   for  变量  in  列表 if 条件]

 1 #!/usr/bin/python
 2 # -*- coding: utf-8 -*-
 3 
 4 li = [1,2,3,4,5,6,7,8,9]
 5 print [x**2 for x in li]
 6 
 7 print [x**2 for x in li if x>5]
 8 
 9 print dict([(x,x*10) for x in li])
10 
11 
12 print  [ (x, y) for x in range(10) if x % 2 if x > 3 for y in range(10) if y > 7 if y != 8 ]
13 
14 vec=[2,4,6]
15 vec2=[4,3,-9]
16 sq = [vec[i]+vec2[i] for i in range(len(vec))]
17 print sq
18 
19 print [x*y for x in [1,2,3] for y in  [1,2,3]]
20 
21 testList = [1,2,3,4]
22 def mul2(x):
23     return x*2
24 print [mul2(i) for i in testList]

 python 生成器表达式Generators  exprssion

(x+1  for   x  in lst) #生成器表达式,返回迭代器。外部的括号可在用于参数时省略;

举例:

  (x+1  for   x  in   lst  if  x!=0)

  多条for子句进行嵌套,嵌套次序就是for子句的顺序:

    ((x, y)  for  x  in  range(3)   for   y  in  range(x) )

列表解析就是鲜明的pythonic.

从python2.2起,生成器提供了一种简洁的方式帮助返回列表元素的函数来完成简单和有效的代码;

它基于yield指令,允许停止函数并立即返回结果。

此函数保存其执行上下文,如果需要,可立即继续执行;

如:

  def   fibonacci():

    a,  b = 0,  1

    while  True:

      yield  b

    a,  b = b,  a+b

python迭代器

python专门将关键字for用作了迭代器的语法糖。在for循环中,python将自动调用工厂函数iter()获得迭代器,自动调用next()获取元素,还完成了检查StopIteration异常的工作;

  for  val  in  lst:

    print   val

  首先python将对关键字in后的对象调用iter函数获取迭代器,然后调用迭代器的next方法获取元素,直到抛出StopIteration异常。对迭代器调用iter函数时将返回迭代器自身,所以迭代器也可以用于for语句中,不需要特殊处理;

  常用的几个内建数据结构tuple、list、set、dict都支持迭代器,字符串也可以使用迭代操作。

使用迭代器的循环可以避开索引,但有时候我们还是需要索引来进行一些操作的,这时候内建函数enumerate就发挥作用了;

它能在iter函数的结果前加上索引,以元组返回:

  for  idx, ele in enumerate(lst):

    print  idx,  ele

  0 1  1 2  2 3  3 4  4 5

 

Python列表推导式是一种简洁的语法,用于快速创建列表。它允许我们在一行代码中使用循环和条件语句来生成列表元素。列表推导式的一般语法是在方括号内使用表达式和循环或条件语句。 引用\[1\]中的代码展示了一个使用两个嵌套循环的列表推导式的例子。通过使用range函数生成一系列数字,我们可以在循环中创建元组,并将其添加到空列表中。最终,我们得到了一个包含所有元组的列表。 引用\[2\]中的代码展示了一个简单的列表推导式的例子。通过使用range函数生成一系列数字,我们可以直接将这些数字添加到空列表中。 引用\[3\]中的代码展示了另一个使用两个嵌套循环的列表推导式的例子。引用\[1\]中的代码相比,这里使用了更简洁的语法来生成包含所有元组的列表。 总结来说,Python列表推导式是一种简洁而强大的语法,可以帮助我们快速创建列表。它可以在一行代码中使用循环和条件语句来生成列表元素。 #### 引用[.reference_title] - *1* *2* *3* [Python列表推导式(更有风格的Python代码写法)](https://blog.youkuaiyun.com/weixin_48728769/article/details/124572778)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^insertT0,239^v3^insert_chatgpt"}} ] [.reference_item] [ .reference_list ]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值