美文网首页
二. 数据类型:序列类型

二. 数据类型:序列类型

作者: DJN_ | 来源:发表于2018-12-14 15:45 被阅读0次

    分为可变和不可变序列。

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

    生成序列

    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: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 指定进制显示

    可变序列

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

    相关文章

      网友评论

          本文标题:二. 数据类型:序列类型

          本文链接:https://www.haomeiwen.com/subject/sneghqtx.html