Python3学习(9)--列表生成式(List generation)

列表生成式:List generation

 

从字面上,我们可以理解为,列表生成式是通过某种公式来产生一个列表list,当然我们也可以通过简单的初始化来构造我们的list,但是如果我们想要得到的list比较复杂怎么办?这时候我们就要用到列表生成式了;由于基础部分,前面讲的太过详细,本篇讲的时候,就以整体demo+注释的方式来好好说一下,这个列表生成式是怎么样玩的,由它构造的list究竟有多简单粗暴,主要还是灵活,没有做不到,只有你想不到。

 

本篇的所有代码如下:

 

#!/usr/bin/env python3
# encoding:utf-8

#一般生成一个list,可以这样做
print('A---------------------list(range(m,n))')
L = list(range(1,11))
print(L)

#生成x*x的,我们可以加个for循环实现
print('B---------------------for x in range(m,n)')
L = []
for x in range(1,11):
	L.append(x*x)
print(L)

#生成x*x的list,我们可以这样做
print('C---------------------[x*x for x in range(m,n)]')
L = [x*x for x in range(1,11)]
print(L)

#生成x*x的list,我们只要能够被3整除的部分
print('D---------------------[x*x for x in range(m,n) if 条件]')
L = [x*x for x in range(1,11) if x%3 == 0]
print(L)


#通过两个变量,利用列表生成式生成一个结构为[x=y]的list,我们可以用字符串进行拼接得到
print("E---------------------[x+'='+y for x,y in D.items()]")
D = {"Name":"appleyk",'age':26,'sex':'F'}#这里注意:age的value值是一个int类型
L = [x+'='+y for x,y in D.items() if not isinstance(y,int)] # 同时访问 dict的key和value,并将key和value组合成新的list元素
#上面我们加了条件限制,也就是只要value是int类型的,我们不组合,因为x+'='+y只针对字符串加可以,如果y是int,+号就会成为定时炸弹
print(L)

#转化list元素为小写
print("F---------------------[s.lower() for s in L]")
L = [s.lower() for s in ['Hello', 'World', 18, 'Apple',None] if (s is not None and not isinstance(s,int))]
#注意,这里我们也加了条件限制,因为int类型和None没有lower属性,且None只能用is来判断,它没有具体的类型!
print(L)


'''
全排列集合:
[x+y+z+.... for x in.. for y in .. for z in .. .....]
一般使用两层就够了,超过三层以上,就有点太庞大了,自己验证
'''
print('G---------------------x+y+z+... for x in .. for y in .. for z in .. ......')
L = [m+n for m in "ABC" for n in "abc"]
print(L)


print("H--------输出指定目录下的所有文件:")

import os  #  output stream 输出流

L = [dir for dir in os.listdir('D:\\')]#listdir函数接收FilePath路径,并返回一个list对象,元素是文件名
print(L)

 


 

我们看下执行的结果:

 

 

通过以上的代码学习,我们知道这种生成式的强大之处,这只是简单的应用,虽然简单,但也足以让人为之惊叹!

 


 

结束语: 如果你暂且改变不了世界,那么,请花点时间,先改变自己吧。

 

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
这个错误"error: metadata-generation-failed"通常出现在使用pip安装软件包时,表示元数据生成失败。这个错误通常不是pip本身的问题,而是由于其他原因引起的。 根据引用和引用的描述,你已经尝试了不同版本的Python(包括Python 3.9.9和Python 3.8.8),但仍然遇到了报错。这表明问题很可能不是由Python版本引起的。 引用中提到了"python setup.py egg_info did not run successfully"的报错内容,这可能与安装软件包的设置有关。 在处理这个问题时,有几个可能的解决方法可以尝试: 1. 确保你的pip版本是最新的,可以使用以下命令升级pip: ```shell python -m pip install --upgrade pip ``` 2. 确保你的Python环境正常运行,可以尝试在命令行中运行简单的Python脚本,确认Python是否能够正常执行。 3. 检查你的网络连接是否正常,有时网络问题可能导致元数据下载失败。可以尝试使用其他网络环境或者检查网络设置。 4. 如果你正在尝试安装特定的软件包,可以尝试使用清华大学的镜像源或者其他可靠的镜像源来替换默认的pip源,以提高下载成功的几率。 5. 如果以上方法都没有解决问题,你可以尝试手动下载软件包的源码,并使用本地安装的方式进行安装。 在解决这种错误时,还需要注意以下几点: - 确保你的操作系统和Python版本是兼容的,有些软件包可能不支持特定的操作系统或Python版本。 - 查阅相关的错误日志或者官方文档,尝试找到其他用户遇到类似问题的解决方案。 - 如果你使用的是虚拟环境,请确保你已经激活了正确的虚拟环境。 希望这些方法能够帮助你解决问题。如果问题仍然存在,请提供更多的错误信息和环境信息,以便更好地帮助你解决。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* *3* [pip,PyCharm安装tesserocr报错解决办法](https://blog.csdn.net/m0_61791601/article/details/123263584)[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^v92^chatsearchT3_1"}}] [.reference_item style="max-width: 50%"] - *2* [error:metadata-generation-failed](https://blog.csdn.net/Zou_XX/article/details/127748845)[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^v92^chatsearchT3_1"}}] [.reference_item style="max-width: 50%"] [ .reference_list ]

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值