log in
register

[Notes] Python: 操作符,控制流,数据类型

Qingqi@2020-03-16 #notes

==基础==

  • # 注释
  • 转义: \' \" \t TAB \n 换行 \\表示\ r' 不转义
  • None 空值
  • 常量 全大写
  • sys.exit()提前结束整个程序
  • \ 代码换行
  • .copy() 复制
  • .deepcopy() 复制,包括内层的list等

==数学操作符==

  • = 等于
  • % 余数
  • // 整除
  • ** 乘方
  • += 自加

==字符串操作==

  • + 连接
  • * 复制N遍

==赋值==

  • = 赋值
  • 变量名区分大小写,不能数字开头
  • 赋值(assignment)也叫作绑定 binding
  • python是按引用传递的
  • 判断这个变量是不是INT
  • isinstance(a,(int,float))

==基础函数==

  • len('abc')
  • ord('A') 65
  • chr(65) 中
  • b'ABC' 存储为bytes
  • '中文'.encode('utf-8') #编码成字节包
  • decode('utf-8') #解码成字符串
  • obj.some_method(x,y,z)
  • str(),int(),float()
  • print()
  • input()

==文件头==

#!/usr/bin/env python3
# -*- coding: utf-8 -*- 

==数据类型==

  • %s 字符串
  • %d 整数
  • %f 浮点数
  • %x 16进制整数
  • Boolean True,False
  • 其中,格式化整数和浮点数还可以指定是否补0和整数与小数的位数:
    • '%2d-%02d' % (3, 1)--->'3-01'
    • '%.2f' % 3.1415926--->'3.14'
  • 用%%来表示一个%

==比较与布尔操作符==

  • ==,!=,<,>,>=,<=
  • and,or,not
  • a^b: 异或: a为true,b不为 或者 b为true,a不为
  • a is b :指向同一个对象为true

==条件和循环==

  • ==记得加冒号:==
  • 条件
  • if,elif,else
  • if x 等价 if x=1
  • 循环
  • for name in names
  • for x in range(10)
  • while
  • break
  • continue

==列表list==

  • 序号从0开始
  • classmate=['a','b','c']
  • x,y,z=classmate
  • classmate[0] 第0个
  • classmate[-1] 倒数第1个
  • .append('x') 加在最后
  • .insert(i,'x') 加在第i个之前 默认加在最后
  • .pop(x) 删除第i个值
  • .remove(x) 删除为x的值
  • .index(x) 返回x的序号
  • .sort() 排序
  • key=length 按字符串长度排序
  • reverse=True 从大到小
  • .reverse() 逆序
  • range(5),py2是列表,py3是range
  • list(range(5)) py3创建列表
  • in/not in 判断元素是否在列表里
  • 字符串可看作每个字母都是单独元素的列表,但是是不可变的
  • 切片
  • [开始索引:结束索引:步长]
  • 算头不算尾
  • 切片是copy
  • 直接赋值是视图
  • 列表生成式/生成器
  • [x * x for x in range(1, 11)]
  • [x * x for x in range(1, 11) if x % 2 == 0]
  • [m + n for m in 'ABC' for n in 'XYZ']
  • []换成()会生成生成器(generator),一边循环一边计算的机制
  • enumerate
  • 可以把一个list变成索引-元素对,这样就可以在for循环中同时迭代索引和元素本身
  • for i, value in enumerate(['A', 'B', 'C']):

==字符串==

  • .upper()
  • .lower()
  • .isupper()
  • .islower()
  • .isalpha() 只有字母
  • .isalnum() 只有数字和字母
  • .isdecimal() 只有数字
  • .isspace() 只有空格等
  • .istitle() 是否大写字母开头的字母
  • .startwith()
  • .endwith()
  • .join()
  • .split() 返回列表
  • .rjust()/ljust()/center() 用空格让字符串对齐
  • .strip()/lstrip()/rstrip() 删除空格
  • .replace(a,b) 把a变成b,但是不改变原字符串

==字符串格式化==

  • %字符串格式化
'字符串格式化-%s' % ('字符串')
'字符串格式化-%d' % (123)
'字符串格式化-%f' % (1.23)
  • {:}字符串格式化
'字符串格式化-{:s}'.format('字符串')
'字符串格式化-{:d}'.format(123)
'字符串格式化-{:f}'.format(1.23)
'字符串格式化-{}'.format(字符串,整数,数组...)
  • 使用索引

    1. '{2}{1}{0}'.format('a','b','c') # >>> 'cba'
    2. '{0[0]}{1[1]}{1[2]}'.format([1,2,3],[4,5,6]) # >>> '156'
  • 使用位置参数

    • '{}{}{}'.format(*[1,2,3]) # >>> '123'
  • 使用关键字参数

    • '{a}{b}'.format(a='test',b=123) # >>> 'test123'
    • '{a}{b}'.format(**{'a':'test','b':123}) # >>> 'test123'
  • 填充

    1. '{0:*>10}'.format('test') # >>> '******test'
    2. '{0:*<10}'.format('test') # >>> 'test******'
    3. '{0:*^10}'.format('test') # >>> '***test***'
  • 进制与精确度

>>> '{0:.2f}'.format(1/3) #两位小数
'0.33'
>>> '{0:b}'.format(10)    #二进制
'1010'
>>> '{0:o}'.format(10)     #八进制
'12'
>>> '{0:x}'.format(10)     #16进制
'a'
>>> '{:,}'.format(12369132698)  #千分位格式化
'12,369,132,698'

==元组tuple==

  • 值不可修改的list
  • t=(1,2,3)
  • t=(1,) 单个元素加逗号才是元组

==集合==

  • set('hellow')
  • set([1,2,3,4])
  • s.add()
  • s.remove()
  • set是无序不重复集合 可作集合运算
  • S1.intersection(S2)
  • S1&S2
  • S1.union(S2)
  • S1|S2
  • S1.difference(S2)
  • S1-S2
  • S1.symmetric_difference(S2)
  • S1^S2
  • S1.issubset(S2)
  • S1.issuperset(S2)
  • S1.isdisjoint(S2)
  • sorted(set('fqwegjerggjiegjirthjth'))
  • zip 和 unzip
  • 配对成高维 和 行转列

==字典==

  • {'ay':12,'bob':23,'comm':34}
  • d[key]
  • 例子:
  • dict(zip(range(100),a))
  • key0到99,value是a的字典
  • 默认情况下,dict迭代的是key。
  • 如果要迭代value,可以用for value in d.values()
  • 如果要同时迭代key和value,可以用for k, v in d.items()
  • 由于字符串也是可迭代对象,因此,也可以作用于for循环
  • .keys()
  • .values()
  • .items()
  • .get(key,default value) 返回key对应的值,如无则返回默认值
  • .setdefault() 设置无key时的默认值
Comments

Log in to add your comment

Don't have an account? register here