python笔记——字符串、列表、元组、字典、集合

1. 字符串

  • 字符串连接
    • ‘+’:效率低
    • ‘join’:s.join(lst) 以 s 作为分隔符,将 lst 中的元素连接成字符串
print(':'.join('abc'))
print(':'.join(['x','y','z']))
a:b:c
x:y:z
  • 重复连接操作:s*n ,例如:"ABCD"*3 => ABCDABCDABCD
  • 比较:
    • 单字符:按ASCII码,空格 < 数字 < 大写字母 < 小写字母
    • 两同长字符串:从左往右依次比较
    • 两不同长字符串:较短的补空格,再从左往右依次比较
  • 字符串分割spilt()
s = 'A'
print(s.split())
print(3*s.split())     # 先算spilt再算乘法
print((3*s).split())
print(['A']*3)

结果为:

['A']
['A', 'A', 'A']
['AAA']
['A', 'A', 'A']
  • 正则表达式

2. 列表

  • [None] 可以作为占位符,
    例如创建一个占用3个元素空间,缺不包含任何有用内容的列表:
    s = [None]*3 => s = [None, None, None]
  • reduce(f, s[,n]):迭代地把序列s的前两个元素作为参数传给f,n有的话加上
  • enumerate(iter)函数
  • zip(s0, s1, …, sn) 逆操作:zip(*lst)
  • 列表分片赋值(要注意以下情况!!!
# 相当于在1的位置上插入了新列表
number = [1, 5, 6]   
number[1:1] = [2, 3, 4]
print(number)
=> [1, 2, 3, 4, 5, 6]
# 相当于将1和2位置替换成了新列表
number = [1, 5, 6, 7]
number[1:3] = [2, 3, 4]
print(number)
=> [1, 2, 3, 4, 7]
  • 分片赋值时,若分片步长大于1,则赋值列表长度要等于步长
    c = list('ABCDEFG')
    c[1:5:2] = list('888') ×
    c = list('ABCDEFG') => ['A', '8', 'C', '8', 'E', 'F', 'G']
  • 列表的专有操作:
    • 元素赋值
    • 元素删除
    • 分片赋值
    • 列表解析 lst = [x**2 for x in lst]
    • append()、extend()、sort()、reverse()、pop()、insert()、remove()

3. 元组

  • 顶层不变性
  • 元组列表相互转换:list(tuple)、tuple(list)

4. 字典

  • d.fromkeys(序列[,值]):以序列中的元素作为字典的关键字,指定值作为值(默认None)
  • dict(([key1, value1], [key2, value2]...))创建字典
  • d.pop(key):删除键为key的键值对并返回删除的值
  • d.popitem():删除最后一个键值对
  • list(d)等同于d.keys()
  • d2.update(d1):将字典d1的键值对添加到d2中
  • d.setdefault(key[,value]):若key存在,返回其值,若keybucunzai ,则给字典添加key:value对,value默认为None

5. 集合

  • 无序,不记录元素位置、插入点,不支持索引、分片
  • 集合创建:set()、{a, b…}、set(字符串、列表、元组)会自动去重
  • 可变集合:可以添加和删除集合元素,但集合中的元素必b须不可变
  • 不可变集合frozenset:不可修改
  • 字典不可作为集合的元素
  • 交(&)并(|)差(-)对称差集(^两集合中相异元素)
  • 可变集合并上不可变集合 => 不可变集合

你可能感兴趣的:(python笔记——字符串、列表、元组、字典、集合)