python:5月24的记录(第五章:序列数据)

序列数据类型

☆元组 :存储固定不变的表

创建元组变量

>>> #方法一:用,隔开
>>> t1 = 1,2,3
>>> t1
(1, 2, 3)
>>> #方法二:加括号
>>> t2 = (1,2,3,4)
>>> t2
(1, 2, 3, 4)
>>> ##特别的,当只有一个元素时要注意加逗号
>>> t3 =(1,)
>>> t3
(1,)
>>> i3 = (1) 
>>> i3
1
>>> type(i3)	#不加,就是int了
<class 'int'>
>>> ##或者也可以
>>> t4 = 1,
>>> t4
(1,)
>>> type(t4)
<class 'tuple'>
>>>#方法三:用tuple创建
>>>t2 = tuple("abc")	#('a','b','c')
>>>t3 = tuple([1,2,3])  #(1,2,3)  只有唯一的元素,用元组形式输出
>>>t4 = tuple([1,2,3],[4,5,6]) #([1,2,3],[4,5,6])
☆列表:可以改变的表,通过下标索引改变数据值
创建列表变量
>>> #方法一:直接加[]
>>> s3 = ["abc"]  #值得注意的是,和元组不同,元组中只有单个元素要加逗号,这里不需要别的操作
>>> s3
['abc']
>>>#下面和元组做个对比
>>> t3 = ("abc")
>>> t3
'abc'
>>> type(s3)
<class 'list'>
>>> type(t3)
<class 'str'>
>>> #方法二:用list创建
>>> t4 = list("abc")
>>> t4
['a', 'b', 'c']

tip:用list,tuple直接创建,是将迭代对象分每个别作为一个元素

对list的操作

当 s[i:j] = x 执行赋值,会赋值
当 s[i:j] = [] i-j 这一段会被移除
当 s[i] = [] i处的值会被置为[]

>>> s = [1,2,3,4,5,6]
>>> s[2] = []
>>> s
[1, 2, [], 4, 5, 6]
>>> s[2:3] = 'a'
>>> s
[1, 2, 'a', 4, 5, 6]
>>> s[2:3] = []
>>> s
[1, 2, 4, 5, 6]

其他的太多了,直接截图书上的

在这里插入图片描述

列表解析式

列表内i的选取规则
举栗子

>>> [i for i in range(10) if i %2 ==0]
[0, 2, 4, 6, 8]
>>> [i ** 2 for i in range(4)]
[0, 1, 4, 9]
>>> [(x,y,x**y) for x in range(1,3) for y in range(1,3)]
[(1, 1, 1), (1, 2, 1), (2, 1, 2), (2, 2, 4)]   #相当于枚举,把x一定,把y的可能列出来
☆字符串
>>> s3 = "Hello,world!"
>>> s3[:5]     #输出前5个字符,到5不输出
'Hello'
>>> s3[5:]	#输出从第5个字符开始的后面所有字符。
',world!'	
☆字节序列

主要用decode,encod
这个可以看这个

序列的基本操作

len(),max(),min(),sum()【这个只能求和数值对象】索引,切片
tip:字节序列使用max,min,索引,返回的内容是ascii
ttip:字符串切片不能从负数开始或结束。
tttip:

>>> lst = [1,2,3,4,5]
>>> lst[-3:-1]
[3, 4]
>>> lst[:2] = 'a'   #修改从0-2的值
>>> lst
['a', 3, 4, 5]
>>> lst[2:] = 'b'
>>> lst
['a', 3, 'b']
☆序列连接和重复操作
>>> t1=(1,2)
>>> t2 = ('a','b')
>>> t1+t2
(1, 2, 'a', 'b')
>>> t1*2	#*2是重复两遍,不是对每个值*2
(1, 2, 1, 2)	
>>> t1		#不改变t1的值
(1, 2)
>>> t2*=2
>>> t2		#×2后改变了t2的内容。可以通过这种方式改变元组的内容?
('a', 'b', 'a', 'b')

成员关系操作

☆ s.count(‘x’) #计算x在s内出现的次数

>>> s = 'Good,better,best!'
>>> s.count('e')
3

☆s.index(‘x’,[i,[j]]) #计算x从i-j内第一次出现的下标

>>> s = 'Good,better,best!'
>>> s.index('e',0,10)
6

☆比较

>>> t1 = (1,2,3)
>>> t2 = (1,1,4)
>>> t1 > t2	
True
>>> t2 > t1	#和C语言一样,比较第一个不同的是谁大,谁就是大的
False

☆排序操作,将元组,字符串转换为列表
sorted(待排序元素,key = None,reverse = False)
sorted有返回值,返回的是一个列表。
若原待排序元素是数值类型,sorted返回从小到大排序后的列表

>>> s1 = (1,5,2,4,3,7,6)
>>> s2 = sorted(s1)
>>> id(s1)		
55183944
>>> id(s2)		#s2是与s1不同的地址
50504904
>>> s2			#s2默认是升序
[1, 2, 3, 4, 5, 6, 7]
>>> sorted(s1,reverse = True) #确认转置后,降序排列
[7, 6, 5, 4, 3, 2, 1]

当待排序元素为字符串时

>>> s3 = 'abAC'
>>> sorted(s3)
['A', 'C', 'a', 'b']			#分别按大写到小写,升序
>>> sorted(s3,key = str.lower)
['a', 'A', 'b', 'C']			
>>> sorted(s3,key = str.high)		#lower有为什么high没有,疑惑
Traceback (most recent call last):
  File "<pyshell#18>", line 1, in <module>
    sorted(s3,key = str.high)
AttributeError: type object 'str' has no attribute 'high'
>>> sorted(s3,reverse = True)		#倒着
['b', 'a', 'C', 'A']

☆all() 等价与——与,只要有一个为假,全为假
any()等价于——或,只要一个真,就全为真

☆序列拆分

赋值如下

>>> a,b = (1,2)
>>> a
1
>>> b
2
>>> b,a = a,b		#优雅的实现两个数的交换
>>> b
1
>>> a
2
>>>data = (1001,'张三',(70,80,90))   #可以换成[1001,'张三',(70,80,90)]
>>> student_id,name,score = data
>>> score
(70, 80, 90)
>>> chinese,math,english = score
>>> math
80

*——叫元组变量,但实际上变量出来的是个列表

>>> first,*midlst,last = range(10)
>>> midlst
[1, 2, 3, 4, 5, 6, 7, 8]
>>> type(midlst)
<class 'list'>			#好奇怪,*叫元组变量,但实际上这是个列表
>>> *midlst,first,seconde,third = range(10)
>>> midlst
[0, 1, 2, 3, 4, 5, 6]
>>>low,*score,high = sorted([70,85,89,88,86,95,99]) #去掉最高分,去掉最低分

字符串的格式化

☆%的输出

举两个栗子

>>> print('姓名:%s,年龄:%d,体重:%.2f'%('顾栖鹤',18,44)) #这里百分号后面是圆括号
姓名:顾栖鹤,年龄:18,体重:44.00

第二个栗子

>>>print('姓名:%(name)s,年龄:%(ages)d,体重:%(weight).2f'%{'ages':18,'name':'顾栖鹤','weight': 44}) #位置可以互换,数值不能用等号
>>>姓名:顾栖鹤,年龄:18,体重:44.00
>>>print('姓名:%(name)s,年龄:%(ages)d,体重:%(weight).2f'%{'name':'顾栖鹤','ages':18,'weight': 44})
>>>姓名:顾栖鹤,年龄:18,体重:44.00
☆format 的输出

对齐方式: “<” 左对齐
“>” 右对齐
"^"居中对齐

str.format还有.format 前面写了
这里补充一个str.format_map

>>> str.format_map('{name:s},{age:d},{weight:3.2f}',{'name':'Marry','age':20,'weight':49})
'Marry,20,49.00'

哎呦我的妈,总算给整完了,头晕。溜了溜了

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值