分为可变和不可变序列。
序列通用操作(以列表为例)
生成序列
list(‘abcd’) -> [‘a’,’b’,’c’,’d’]
list(range(5)) -> [0,1,2,3,4]
判断元素是否包含
a = [1,2,3,4,’a’,’b’]
1 in a -> True
2 not in a -> False
连接序列
a = [1,2]
b = [4,5]
a + b -> [1,2,4,5]:a,b本身没有改变
重复元素
[3] * 4 -> [3,3,3,3]
访问元素
a = [1,2,3,4,5]
a[0] -> 1
a[-1] -> 3
a[0:2] -> [1,2]
a[:3] - > [1,2,3]
a[3:] -> [4,5]
a[:] -> [1,2,3,4,5]
按步长访问
a = [1,2,3,4,5]
a[::2] -> [1,3,5]
获取序列长度
a = [1,2,3,4,5]
len(a) -> 5
最小/最大/和
a = [1,2,3,4,5]
min(a) -> 1 全局函数
max(a) -> 5
sum(a) -> 15
检索元素第一次出现的位置下标
a = [1,2,3,4,5]
a.index(2) -> 1 方法
统计元素出现次数
a = [1,2,3,4,5]
a.count(2) -> 1
不可变序列
- 可包含任意对象的有序集合
- 通过下标(位置偏移)索引访问
- 固定长度,异质,可任意嵌套
- 对象引用数组
不可变体现在不像列表一样可追加(extend),扩展元素(append),原位改变。
元组tuple
声明
t=(1,2,3,’1’)
t=1,2,3,’1’:简便写法
t=1,
只有一个元素时末尾“,”要加上如:t = (1,),否则被当做基本类型处理。
t = tuple(range(2,4)) -> (2,8)
t[1] -> 3
t[0:2] -> (2,3)
常用操作
t1=(1,)
t2=(2,)
t = t1 + t2 -> (1,2)
t = t1 * 3 -> (1,1,1)
简单赋值/交换
a,b = 1,2 : a -> 1,b -> 2 利用tuple的语法同时给a和b赋值
a,b = b,a 交换a和b的值
range
type(range(5)) -> <class ‘range’>
range(1,21,2) 步长值为2
字符串str
可用单引号或双引号
三引号换行将用 \n 自动替代
str = r’c:\ca\ccc\tt.txt’ 字符串前加 r(raw) 表示后续字符串中的 \ 不做转义字符。
str = b’abc123’ 字符串前加b表示用asci字节码表示(字节)(或十六进制)
str=’a’ ‘b’ -> ‘ab’ 空格会被忽略
内置方法
支持序列的通用操作
s = ‘abcd123’
‘3’+str(4) -> ‘34’
s1 = s.replace(‘a’,’b’) -> ‘bbcd123’
s2=s.replace(‘b’,’f’,1) -> ‘afcd123只替换前一个
s2.capitalize() 单词第一个字母大写
su = s2.upper() 变为大写
sl = s2.lower() 变为小写
s2.startswith(‘a’)
s2.endswith(‘a’)
s2.isnumeric() 是否为数字
s2.isalpha() 是否为字母
l = s2.split(‘a’) 拆分,无参时将整体作为列表的一个元素
‘:’.join([‘a’,’b’,’c’]) -> ‘a:b:c’ 连接
>>> a = 'a'
>>> b = 'b'
>>> c = 12
>>> 'A:{0},B:{1},C:{2},DA:{0}'.format(a,b,c) 字符串拼接,参数顺序的情况下 {} 中的下标可取消
'A:a,B:b,C:12,DA:a'
>>> 'A:{0},B:{1},C:{2},DA:{0},{depo}'.format(a,b,c,depo='depo1') depo变量要在参数中指定
'A:a,B:b,C:12,DA:depo1'
>>> '{0:10}={1:8}'.format('10个字符','22.33')
'10个字符 =22.33 ' 默认字符左对齐,数字右对齐
>>> '{0:>10}={1:<8}'.format('10个字符','22.33')
' 10个字符=22.33 ' 指定对齐方式
print('{:f},{:.2f},{:06.2f}'.format(3.1415926,3.1415926,3.1415926))
3.141593,3.14,003.14
:06.2f 总位数为6,浮点数形式,小数点后显示2位,位数不足前面补0
print('{:X},{:o},{:b}'.format(32,32,32))
20,40,100000 指定进制显示
可变序列
- 包含任意对象的有序序列
- 通过下标索引(位置偏移)访问
- 可变长度,异质,可任意嵌套
- 支持原位修改
- 对象引用数组
列表list
声明
scores = [23,4,24,56.3]
scores[0] -> 23 :下标索引访问,从0开始
scores[-1] -> 56.3
scores[0:2] -> [23,4]:范围访问:含头不含尾
scores.append(78):追加到最后
scores.append([2,33,’a’]):任意嵌套
scores[0] = 3:原位改变
常用操作
a = [1,5,4,2]
排序
数值型:a.sort() -> [1,2,4,5]
自定义:c = [‘aa’,’vv’,’ff’]
c.sort(key=lambda x:x[-1])
函数:sorted(c,key=lambad n:n[1])
a = list(range(1,11)) -> [1,2,3,4,5,6,7,8,9,10]
改变指定范围的值
a[i:j] = t,t必须可迭代,当len(t) > j – i 时,t将插入,当len(t) < j-i 时替换并将长度不够的位置删除,len(t) = 1时将前j-i替换为t[0]
a[:3] = [11,22,33] -> [11,22,33,4,5,6,7,8,9,10]
a[0:3] = [11,22] -> [11,22,4,5,6,7,8,9,10]
a[:3] = [11] -> [11,11,11,4,5,6,7,8,9,10]
a[i:j:k] = t,加步长时替换的新值的数目要匹配
a[:6:2] = [0,0,0] -> [0,2,0,4,0,6,7,8,9,10]
a[:6:2] = [1] X错误
根据索引删除
del a[0]:删除列表a的第一个元素
del a[::2]
del a[3:6]
a[:2] = [] 等同于 del a[:2]
方法删除
a.remove(1) 删除第一个匹配的值
清空序列
a.clear()
a = [1,2,3]
追加序列
a.append(78) -> [1,2,3,78]:追加到最后
a.append([1,2]) -> [1,2,3,[1,2]]
扩展元素
a.extend([1,2]) -> [1,2,3,1,2]
插入元素
a.insert(0,99) -> [99,1,2,3]
a[0:0] = [99] -> [99,1,2,3]
弹出并删除值
a.pop() -> 3 [1,2]
a.pop(1) -> 2 [1,3]
反转序列
a.reverse() [3,2,1] :影响实际序列
复制序列
l = a l is a -> True共享引用
l = a[:] l is a -> False复制序列
l = a.copy() l is a -> False复制序列
网友评论