Python基础知识

本文最后更新于:2021年10月4日 晚上

数据结构

序列

Python 内置多种序列,主要以列表与元组为例

主要区别在于列表可修改、元组不可修改

通用操作

  1. 索引

    1
    2
    3
        >>> egstr = 'hello';
     >>> egstr[0]
     'h'
  2. 切片:访问特定范围的元素

    1
    2
        >>> egstr[0:-1:1]
     'hello'

    其中第一位表示起始位置,默认为零,

    第二个表示特定位置但不包含在内的位置,

    第三个表示步长,默认为1.

  3. 序列相加

  4. 序列乘法:常用于初始化

    1
    2
        >>> [42] *3
     [42,42,42]
  5. len(),max(),min()分别指代元素个数,序列中最大元素,最小元素

列表

  1. 基本操作

    1
    2
    3
    4
    5
    6
    7
    8
        x = [1,2,3]#赋值
     >>> del x[2]# 删除
     >>> x
     [1,2]
     >>>name = list('p123213')# 切片赋值,可替换长度不等徐磊
     >>>name[1:] = 'ython'
     >>> name
     'python'
  2. 基本方法

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
        #lst表示一个列表
     lst.append(arg) #添加元素
     lst.clear#清空
     b = lst.copy()# b = lst,拷贝
     cnt = lst.count(arg)# 计算指定元素出现次数
     lst.extend(b) # b添加到lst的末尾,可对序列操作
     lst.index('1')#指定值第一次出现的索引
     lst.insert(3,'')# 指定位置3插入元素''
     lst.pop()# pop最后一个元素
     lst.remove(arg)#删除指定值的第一个元素
     lst.reverse()#倒转list
     lst.sort()# 排序之后详细使用

元组

通常用圆括号表示>>> 1,2,3 (1,2,3)

可用tuple([1,2,3])将list转换为元组

字符串

设置字符串格式

基本使用对字符串调用方法format,并提供设置的格式值。使用大括号阔起替换字段

而替换字段一般有三个部分组成

  1. 字段名:索引或者标识符,还可以制定列表中的元素

    1
    2
        >>> "{foo} {} {bar} {}".format(1,2,bar=4,foo=3)
     '3 1 4 2'
  2. 转换标志:叹号后面的单个字符。主要有b,c,d,e,E,f,F,g,G,n,o,s,x,X,%

    1
    2
    3
    4
    >>> "number is {num}".format(num=42)
    'number is 42'
    >>> "number is {num:f}".format(num=42)
    'number is 42.000000'
  3. 格式说明符:冒号后面的表达式:字段宽度,数精度等

    1
    2
    "pi:10.2f".format(pi=pi)
    # 宽度10,保留两位小数 3.14

字符串方法

  1. centercenter

    两边填充字符使字符串居中,默认空格

    1
    2
    >>> "The Middle by Jimmy Eat World".center(39, "*") 
    '*****The Middle by Jimmy Eat World*****'
  2. findfind

    查找子串,返回第一个字符的索引,否则-1

    1
    2
    3
    4
    5
    >>> 'With a moo-moo here, and a moo-moo there'.find('moo') 
    7
    >>> title="123"
    >>> title.find('kk')
    -1
  3. joinjoin

    合并序列的元素,与split相反

    1
    2
    3
    4
    5
    6
    >>> seq = [1, 2, 3, 4, 5] # 尝试合并数字列表
    >>> sep = '+'
    >>> sep.join(seq)# error # 合并元素必须是字符串
    >>> seq = ['1', '2', '3', '4', '5']
    >>> sep.join(seq)
    '1+2+3+4+5'
  4. lowerlower

    字符串字母变为小写

    1
    2
    >>> 'Trondheim Hammer Dance'.lower() 
    'trondheim hammer dance'
  5. replacereplace

    将制定子串替换为另一个字符串,并返回替换后的结果

    1
    2
    >>> 'This is a test'.replace('is', 'eez') 
    'Theez eez a test'
  6. splitsplit

    将字符串拆分为序列,作用于join相反

    1
    2
    >>> '/usr/bin/env'.split('/') 
    ['', 'usr', 'bin', 'env']
  7. stripstrip

    去掉字符串开头结尾的空白删除,返回删除后的结果

    1
    2
    >>> ' internal whitespace is kept '.strip() 
    'internal whitespace is kept'
  8. translatetranslate

    与replace类似,替换字符串特定部分,但是只能进行单字符替换,效率更高

    使用前需要创建转换表,

    1
    >>> table = str.maketrans('cs', 'kz')# c\to k ,s\to z
    1
    2
    >>> 'this is an incredible test'.translate(table) 
    'thiz iz an inkredible tezt'
  9. 判断字符串是否满足特定条件

    isalnum、isalpha、isdecimal、isdigit、isidentifier、islower、isnumeric、isprintable、isspace、istitle、isupper

字典

字典是Python中唯一的内置映射类型,值存储于键下

  • 创建字典

    1
    2
    3
    4
    5
    6
    7
    phonebook = {'Alice': '2341', 'Beth': '9102', 'Cecil': '3258'}
    >>> items = [('name', 'Gumby'), ('age', 42)]
    >>> d = dict(items)
    >>> d
    {'age': 42, 'name': 'Gumby'}
    >>> d['name']
    Gumby
  • 使用字典

    基本操作

    len(d)返回字典d包含的项(键值对)数。

    d[k]返回与键k相关联的值。

    d[k] = v将值v关联到键k。

    del d[k]删除键为k的项

    k in d检查字典d是否包含为k的项。

字典方法

  1. clearclear

    删除所有的字典项

    1
    2
    3
    4
    5
    6
    d = {'age': 42, 'name': 'Gumby'}
    >>> returned_value = d.clear()
    >>> d
    {}
    >>> print(returned_value)
    None
  2. copycopy浅复制

    返回一个新的字典

    替换副本的值时,原件不影响,修改值时原件影响

    1
    2
    3
    4
    5
    6
    7
    8
    >>> x = {'username': 'admin', 'machines': ['foo', 'bar', 'baz']} 
    >>> y = x.copy()
    >>> y['username'] = 'mlh'
    >>> y['machines'].remove('bar')
    >>> y
    {'username': 'mlh', 'machines': ['foo', 'baz']}
    >>> x
    {'username': 'admin', 'machines': ['foo', 'baz']}

    深复制:deepcopydeepcopy:from copy import deepcopy

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    >>> from copy import deepcopy 
    >>> d = {}
    >>> d['names'] = ['Alfred', 'Bertrand']
    >>> c = d.copy()
    >>> dc = deepcopy(d)
    >>> d['names'].append('Clive')
    >>> c
    {'names': ['Alfred', 'Bertrand', 'Clive']}
    >>> dc
    {'names': ['Alfred', 'Bertrand']}
  3. fromkeysfromkeys

    创建新字典,其中包含的键每个对应值为NoneNone,也可提供默认值

    1
    2
    3
    4
    >>> {}.fromkeys(['name', 'age']) 
    {'age': None, 'name': None}
    >>> dict.fromkeys(['name', 'age'], '(unknown)') # 默认值为(unknown)
    {'age': '(unknown)', 'name': '(unknown)'}
  4. getget

    访问指定键的值,相较于直接访问较为宽松:访问不存在的键返回None

    若存在键与直接访问相同

    1
    2
    3
    4
    5
    6
    7
    8
    9
    >>> d = {} 
    >>> print(d['name']) # 不用get
    Traceback (most recent call last): File "<stdin>", line 1, in ? KeyError: 'name'
    # 而使用get不会这样:
    >>> print(d.get('name'))
    None
    >>> d['name'] = 'Eric'
    >>> d.get('name')
    'Eric'
  5. itemsitems

    返回所有字典项的列表,当然排列顺序不固定

    1
    2
    3
    >>> d = {'title': 'Python Web Site', 'url': 'http://www.python.org', 'spam': 0} 
    >>> d.items()
    dict_items([('url', 'http://www.python.org'), ('spam', 0), ('title', 'Python Web Site')])
  6. keyskeys

    返回字典试图,包含指定字典的键

  7. poppop

    get+del:获取与指定键相关联的值,并将该键值对从字典中删除

    1
    2
    3
    4
    >>> d = {'x': 1, 'y': 2} 
    >>> d.pop('x') 1
    >>> d
    {'y': 2}
  8. popitempopitem

    随机弹出一个字典项,较高效

    ps:可预测顺序弹出需要学习模块collections中的OrderDict类

    1
    2
    3
    4
    5
    >>> d = {'url': 'http://www.python.org', 'spam': 0, 'title': 'Python Web Site'} 
    >>> d.popitem()
    ('url', 'http://www.python.org')
    >>> d
    {'spam': 0, 'title': 'Python Web Site'}
  9. setdefaultsetdefault

    类似get获取,但当没有对应的键时返回给定的值,并添加相应键

    1
    2
    3
    4
    5
    6
    7
    8
    9
    >>> d = {}
    >>> d.setdefault('name', 'N/A') 'N/A'
    >>> d
    {'name': 'N/A'}
    >>> d['name'] = 'Gumby'
    >>> d.setdefault('name', 'N/A')
    'Gumby'
    >>> d
    {'name': 'Gumby'}
  10. updateupdate

    使用一个字典的项来更新另一字典,若包含键相同的项目就替换

    1
    2
    3
    4
    5
    >>> d = { ... 'title': 'Python Web Site', ... 'url': 'http://www.python.org', ... 'changed': 'Mar 14 22:09:15 MET 2016' ... }
    >>> x = {'title': 'Python Language Website'}
    >>> d.update(x)
    >>> d
    {'url': 'http://www.python.org', 'changed': 'Mar 14 22:09:15 MET 2016', 'title': 'Python Language Website'}
  11. valuesvalues

    返回字典由值组成的字典视图,与keys返回键的不同

参考

https://techvidvan.com/tutorials/python-data-structures/

《流畅的Python》

《Python3基础教程》


Python基础知识
http://example.com/2021/07/15/Introduction/python-basic-data-struction/
作者
BFlame
发布于
2021年7月15日
许可协议