夜间模式暗黑模式
字体
阴影
滤镜
圆角
主题色
Python学习笔记2-列表与元组与字典

列表和元组

通用的序列操作

索引

负索引从后往前, 最后一个字符为-1

>>> 'abce'[3]
'e'

>>> 'abc'[-3]
'a'

切片(P26)

使用两个索引, 中间用冒号分隔(左闭右开)

如果第一个索引位于第二个索引前面, 返回空序列

如果切片开始于开头, 可忽略第一个索引, 结束于末尾, 可忽略第二个索引

>>> s='abcd'
>>> s[1:2]
'b'
>>> s[-3:-1]
'bc'
>>> s[-3:]
'bcd'
>>> s[:]
'abcd'

切片第三个参数为步长, 默认为1, 代表每隔(步长-1)个元素提取一个元素, 负数步长代表从右往左提取元素(此时第一个索引必须在第二个索引后面)

>>> numbers[-1:-5:-2]
[6, 4]
>>> numbers[1:5:2]
[2, 4] 

加法

将两个序列拼接

乘法

序列乘以一个数x表示重复这个序列x次

in

检查特定的值是否在序列中

>>> "xy" in "fawefxy"
True
>>> 10 in [1, 2, 10]
True

len, max, min函数

返回元素个数, 最大元素, 最小元素

len([1, 2, 3]) # 3
min([1, 2, 3]) # 3
min([1, 2], [3]) # [1, 2]

列表(P31)

list(): 将一个序列作为参数, 返回一个列表

基本操作

  1. 修改列表, 给元素赋值

    x = [1, 2, 3, 4]
    x[3] = 5
    # [1, 2, 3 ,5]
    
  2. 删除元素

    del x[2]
    # [1, 2, 5]
    
  3. 给切片赋值

    可以对切片进行赋值

    >>> x = [1, 2, 3, 4]
    
    # 整段替换
    >>> x[3:] = [4, 5 ,6, 7]
    >>> x
    [1, 2, 3, 4, 5, 6, 7]
    
    # 替换切片 
    >>> x[-1:-5:-2] = [1, 2]
    >>> x
    [1, 2, 3, 4, 2, 6, 1]
    
    # 替换一个空切片达到插入元素的效果
    >>> x[1:1] = 'a'
    >>> x
    [1, 'a', 2, 3, 4, 2, 6, 1]
    
    # 将一个切片替换为空序列达到删除元素效果
    >>> x[0:1] = []
    >>> x
    ['a', 2, 3, 4, 2, 6, 1]
    
    

    列表方法

    1. append(): 追加元素到列表末尾

    2. clear()

    3. copy(): 复制列表并返回(python中所有并变量都是类似C++中引用的, 直接赋值相当于两个变量指向了同一个值)

    4. count(): 返回指定元素在列表中出现的次数

    5. extend(): 将多个值添加到列表末尾

    6. index(): 返回指定值在列表中第一次出现的索引, 不存在则异常

    7. insert(pos, value): 将一个元素插入列表, 相当于ls[pos:pos] = value

    8. pop(): 删除列表尾元素并返回

    9. remove(): 删除第一个为指定值的元素, 不存在则异常

    10. reverse(): 列表倒序

    11. sort(): 将列表原地排序, 有两个可选参数sort(key, reverse), 第一个参数为用于排序的函数(对于每个元素创建一个键, 并据此排序), reverse为True时相反顺序排序

      >>> x = ['1234', '342', '34', '23425']
      >>> x.sort(key=len, reverse=True)
      >>> x
      ['23425', '1234', '342', '34']
      
    12. sorted(): 返回一个排序好的新列表

元组(P39)

元组为不可修改的序列, 用圆括号扩起或则用逗号分隔

>>> 1, 2, 3
(1, 2, 3)
>>> (1, 2, 3)
(1, 2, 3)
>>> 1,
(1,)

tuple(): 将一个序列作为参数返回一个元组

字符串

设置字符串格式(P42)

内容比较繁杂, 大致介绍, 用到的时候再翻书

有两种形式:

  1. 在%左边指定一个字符串(格式字符串), 右边指定一个要设置其格式的值(可使用元组或字典或单个值)

    >>> "%d %.2f"%(10, 23)
    '10 23.00'
    
  2. format, 每个被替换字段使用花括号括起, 可以给替换字段指定名称({name}关键字参数), 也可以不指定名称或以索引为名称({}位置参数), format中, 位置参数需写在关键字参数前面

    >>> "{name}{value:.2f}{1}{1}".format(2, 3, name='fuck', value=10.2)
    'fuck10.2033'
    
  3. f字符串, 可直接使用同名变量替换字段

    >>> from math import e
    >>> f"e={e}"
    'e=2.718281828459045'
    

字符串格式详细(P43)

类似C++, 用<, >, ^表示左对齐, 右对齐, 居中

字符串方法(P48和附录B)

  1. center: 在字符串两边填充字符, 原字符串达到指定长度并原字符串居中(或在中间偏左)

  2. find: 查找子串第一次出现位置, 找不到返回-1

  3. join: 将字符串序列合并为一个字符串, 用join前的字符串分隔

  4. split: 和join相反, 将字符串拆分(以split后面的分隔符分隔)

    >>> t =  "ab".join(["1", "2", "3"])
    >>> t
    '1ab2ab3'
    >>> t.split("ab")
    ['1', '2', '3']
    
  5. lower: 返回字符串小写版本; title: 所有单词首字母大写; islower()….

  6. replace: 将指定子串替换并返回替换后的新字符串

  7. strip: 将开头和结尾的空白删除, 也可以指定要删除的字符, 还有lstrip和rstrip

  8. translate: 用设置的的转换表(不同Unicode码点之间的转换关系)转换字符串

  9. is*: 判断字符串是否满足指定条件, 如isalnum, isalpha, islower等

字典

表示方式:

>>> age = {'Alice':20, 'Bob':32}
>>> age
{'Alice': 20, 'Bob': 32}

可以用函数dict从其他映射或键-值对序列创建字典:

>>> items = [['name', 'Alice'], ['age', 20]]
>>> d = dict(items)
>>> d
{'name': 'Alice', 'age': 20}

还可以用关键字实参调用dict()

>>> d = dict(name='Alice', age=20)
>>> d
{'name': 'Alice', 'age': 20}

键必须是不可修改的类型(即hashable的, 元组, 字符串, 数值等)

基本操作

  • len(d): 字典d的项数
  • d[k]
  • d[k] = v
  • del d[k]
  • k in d: 查找键是否存在

字典方法(P58)

  • clear

  • copy(浅赋值, 要使用深复制, 应使用copy模块中的deepcopy)

  • fromkeys: 创建一个字典, 包含指定的键, 所有键对应的值都是None({}.formkeys([…]), dict.formkeys([…]])

  • get: 安全的访问字典项, 当项不存在的时候返回None(或自己指定的值)

  • items: 返回一个列表(dict_items类型), 每个元素都为(key, value)形式, 包含字典所有项

  • keys: 类似items, 但返回的列表只包含键

  • value: 同上, 返回的列表只包含值

  • pop: 返回指定键对应的值, 并删除该项

  • popitem: 随机弹出一个字典项

  • setdefault: 类似get, 但但键不存在的时候, 添加指定的项:

    >>> d={}
    >>> d.setdefault('name', 'n/a')
    'n/a'
    >>> d['name']
    'n/a'
    >>> d.setdefault('name', 't')
    'n/a'
    
    
  • update: 用另一个字典中的项更新字典

    >>> d1
    {0: 0, 1: 2, 2: 4}
    >>> d2
    {1: 3, 2: 6, 3: 9}
    >>> d1.update(d2)
    >>> d1
    {0: 0, 1: 3, 2: 6, 3: 9}
    
    
暂无评论

发送评论


				
上一篇
下一篇