流畅的Python

第二章 序列构成的数组

2.1 内置序列类型概览

容器序列:list,tuple,collections.deque,这些能存放不同类型的数据,是它们所包含的任意类型的对象引用
扁平序列:str,bytes,bytearray,memoryview,array.array,只能容纳一种数据类型,里面存放的是值,是一段连续的内存空间,由此可见扁平序列更加紧凑。
可变序列:list,bytearray,array.array,collections.deque,memoryview
不可变序列:tuple,str,bytes

这里写图片描述

2.2列表推导和生成器表达式

列表推导:它的作用只有一个,就是生成列表,所以要以简洁的代码表达出来

tmp='test'

#第一种
result=[]
for s in tmp:
    result.append(ord(s))
print(result)

#第二种
result=[ord(s) for s in tmp]
print(result)

生成器表达式:虽然列表推导也能用来初始化元组,数组和其他序列,但是生成器遵守迭代器协议,逐个产生元素,更节省内存

colors=['black','white']
sizes=['S','M','L']
for tshirt in ('%s %s'%(c,s) for c in colors for s in sizes):
    print(tshirt)

元组:除了用作不可变的列表,还可以用于没有字段名的记录

lax_coordinates=(33.43243,-98.44432)
traveler_ids=[('USA','1312312'),('China','5435634')]

拆包:
city,year,pop,chg,area=('Beijing',2017,898,0.66,90980)

具名元组:创建一个具名元组需要两个参数,一个是类名,一个是类的各个字段名,字段名要以一串参数的形式传入到构造函数中

#定义一个City类,参数字段名有name,country,coordinates
City=namedtuple('City','name country coordinates')
china=City('china','CH',(56.8796,65.8546))
print(china.name)
print(china.country)
print(china.coordinates)

元组和列表的方法,属性
这里写图片描述
这里写图片描述
这里写图片描述

2.3切片

python中支持切片操作的有列表,元组,字符串有序序列,同时也支持对象,原对象是什么类型,那么切片完成就是什么类型,相当于重新生成一个对象。

列表切片 [start,end]

list=[1,2,3,4,5,6,7,8,9]

#切片操作(截取第一个位置到第五个位置)
new_list=list[:5]
print(new_list)
#第二个位置到倒数第二个位置
new_list=list[2:-2]
print(new_list)

这里写图片描述

对象切片 [start,end,step] step:步长

tmp='test_string'
str=tmp[5::]
print(str)

这里写图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值