二. 数据类型:序列类型

分为可变和不可变序列。

序列通用操作(以列表为例)

生成序列

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

不可变序列

  1. 可包含任意对象的有序集合
  2. 通过下标(位置偏移)索引访问
  3. 固定长度,异质,可任意嵌套
  4. 对象引用数组

不可变体现在不像列表一样可追加(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?️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},{?},{:b}’.format(32,32,32))
20,40,100000 指定进制显示

可变序列

  1. 包含任意对象的有序序列
  2. 通过下标索引(位置偏移)访问
  3. 可变长度,异质,可任意嵌套
  4. 支持原位修改
  5. 对象引用数组

列表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复制序列

发布了110 篇原创文章 · 获赞 50 · 访问量 10万+

猜你喜欢

转载自blog.csdn.net/aimeimeiTS/article/details/85004927