列表生成式

我的python学习19/9/6

列表生成式

新的一天继续学习

列表生成式

即List Comprehensions,是python内置的简单强大的创建list的生成式。
举个栗子:要生成list[1,2,3,4,5,6,7] 可以用list(range)函数

l(range(1,8))
print(l)

>[1,2,3,4,5,6,7]

如果要生成[1x1,2x2,3x3…10x10]怎么做?
Fe1:

l = []
for i in range(1,11):
	l.append(x*x)
print(l)
>[1,4,9...100]

但是循环太初级了,可以用列表生成式
Fe2:

[x*x for x in range(1,11)]
#第一次看到的时候惊了,竟然还能这么写。。。。
#前面是想要生成的格式 后面是for循环 多写几次记住

还可以在for循环后加上if判断,这样就可以筛选出仅偶数的平方:
Fe3:

l = [x*x for x in range(1,11) if x % 2 ==0]
print(l)
>[4,16,36,64,100]

还可以两层循环生成全排列
Fe4:

[m + n for m in 'ABC' for n in 'XYZ'
['AX','AY','AZ','BX','BY','BZ','CX','CY','CZ']
#要记住他是怎么进行的循环

运用列表生成式,可以写出非常简洁的代码,例如列出当前目录下所有文件夹和目录名,通过一行代码实现
Fe5

import os
[d for d in os.listdir('.')] #os.listdir可以列出文件和目录
>['.idea', 'baidu.png', 'baike_spider', 'DictAndSet.py', 'ghostdriver.log', 'itcast.png', 'iteratorAndGenerator.py', 'Multiprocessing_.py', 'pachongStudy.py', 'PythonInterviewTest.py', 'Regular_expression.py', 'Selenium_PhantomJS.py', 'venv', '长城.png']

for循环可以同时使用两个甚至多个变量,比如dict的items()可以同时迭代key和value
Fe6:

d = {'x': 'A', 'y': 'B', 'z': 'C' }
for k,v in d.items():
	print(k,'=',v)
>y = B
>x = A
>z = C

还可以把list的所有字符串变成小写(lower)或大写(upper)
Fe7:

l = ['Hello','World']
print(s.lower() for s in l)
>['hello','world']

最后一个简单的小问题
将L = [‘Hello’, ‘World’, 18, ‘Apple’, None]小写化输出,由于18和None不存在lower的方法,肯定会报错,所以用isinstance()函数判断,下面写出isinstance的简介

isinstance() 与 type() 区别:
type() 不会认为子类是一种父类类型,不考虑继承关系。
isinstance() 会认为子类是一种父类类型,考虑继承关系。
如果要判断两个类型是否相同推荐使用 isinstance()。

以下是 isinstance() 方法的语法:

isinstance(object, classinfo)

po出答案:

L1 = ['Hello','World',19,'Apple',None]
L2 = [x.lower() for x in L1 if isinstance(x, str)]
print(L2)
if L2 == ['hello', 'world', 'apple']:
    print('测试通过!')
else:
    print('测试失败!')

>>>['hello', 'world', 'apple']
>>>测试通过!

最后决定下一篇写我最近在python实习面试中遇到的笔试题,有些很有意思,有些遇到了很多次,无论是写出来巩固下记忆还是对有可能看到的同学,都很有用处

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值