Concise Operation
Table of Contents |
- 参考 - 快速输入 - 输入字符串 - 输入整数 - 输入小数 - 创建空对象 - 数据类型 - bool - 整型 - 浮点型 - 除法 - 查看类与类的关系:type()函数和isinstance()函数 - 基本数据结构 - 字符串str - 编码与字符的转换 - - 列表list - 预分配与初始化 - 增删查改 - 列表的排序 - 元组tuple - 字典dict - 预分配与初始化 - 增删查改 - 视图 - 集合set - 预分配与初始化 - 增删查改 - 集合的运算 - 运算和控制结构 - 运算符 - 比较运算符的连用 - if - while循环 - 推导式/解析式 - 列表推导式 - 字典推导式
|
参考
Python 3教程 | |
runoob PDF下载地址 | https://github.com/gagayuan/runoob-PDF-/tree/master/runoob/%E6%9C%8D%E5%8A%A1%E7%AB%AF |
快速输入
输入字符串
input()函数接受整行字符串,并返回所得字符串。 | ||||||
str.split():字符串分割函数 通过指定分隔符对字符串进行切片,并返回分割后的字符串列表。
语法: str.split(sep = None, maxsplit = -1)[n]
参数说明:
|
输入整行字符串 | s = input('prompt') | ||
以空格分割字符串 |
| ||
以"/"分割字符串 |
|
输入整数
map() 函数:根据提供的函数对指定序列做映射。
map(function, iterable, ...) 第一个参数 function 以参数序列中的每一个元素调用 function 函数,返回包含每次 function 函数返回值的新列表。
demo:
|
输入一个整数 | 用int()函数将input()所得字符串转换为整数 a = int(input()) |
在一行中输入多个以空格分开的整数到指定变量 | 先用split()函数将input()所得字符串按空格分割,得到子串列表。 然后用int()函数将子串转换为整数。 最后用map()函数返回相应的迭代器以赋值。 n, p = map(int, input().split()) |
在一行中输入多个以","分开的整数到指定变量 | n, p = eval(input()) |
将一行中的整数输入到列表中 | 用list()函数将map()所得的迭代器转换为列表 ar = list(map(int, input().split())) |
输入小数
string.atof()函数 |
输入一个小数 |
| |
输入一行小数,存在列表中 |
|
创建空对象
python中的所有类型(包括整数和浮点数)均会装箱,故可创建相应类型的空对象,值为默认值。
数字型的类会返回0,其他类型的返回空。
整数 |
|
浮点数 |
|
高精度decimal |
|
分数fractions |
|
字符串 |
|
列表list |
|
元组tuple |
|
字典dict |
|
Attention
OJ Python的答题结果:"返回非零"
- 在python2中用了input(),或在python3中用了raw_input()。
如果是python2提交,就要用raw_input();
如果是python3提交,就要用input()。
- 列表index out of range有时候也会返回这个错误。
Python中没有 i++ 或者 i--
Python规定,数值对象是不可改变的。 因此,Python中没有自增和自减。 i = i + 1 相当于重新创建了一个变量 i ,而不是改变了 i 中的数值。 可如下代替自增自减: i = i + 1 或者 i += 1 |
数据类型
bool
真 | True |
假 | False |
PS:Python中的布尔值首字母大写
bool() 函数:将参数转换为布尔类型。如果没有参数,则返回 False。 bool 是 int 的子类。 |
class bool([x]) # x -- 要进行转换的参数。 # 返回 True 或 False。 |
整型
- 对于大整数,python会自动处理。python支持大整数(无限位数)运算。
浮点型
positive_inf = float("inf") # 正无穷 negative_inf = float("-inf") # 负无穷 not_number = float("nan") # 非数 |
python查看float的最值 |
import sys float_max = sys.float_info.max float_min = sys.float_info.min print(str(float_max) + " " + str(float_min)) |
float的最大值:1.7976931348623157e+308 大于0时float的最小值:2.2250738585072014e-308 小于0时float的最大值:-2.2250738585072014e-308 float的最小值:-1.7976931348623157e+308 |
除法
默认是小数除法 |
|
地板除 |
|
四舍五入 | round( x [, n] ) 保留n位小数(四舍五入,浮点数可能会受计算机表示的精度影响从而影响四舍五入)。 默认保留整数。 |
查看类与类的关系:type()函数和isinstance()函数
参考 | |||
type() | 如果只有第一个参数则返回对象的类型,三个参数返回新的类型对象。
|
基本数据结构
字符串str
编码与字符的转换
|
查看当前python(py文件)使用的字符编码
import sys sys.getdefaultencoding() |
string模块提供了许多常用功能,如
string.digits | 数字 |
string.ascii_lowercase | 小写字母 |
string.ascii_uppercase | 大写字母 |
列表list
预分配与初始化
创建空列表 |
| ||||
预分配长度为n的空列表 |
| ||||
可迭代对象转换为列表 |
demo 用可迭代的初值初始化列表:
demo 用列表推导式剔除不需要的数据,以初始化列表:
|
增删查改
增 |
| |||||||
删 |
| |||||||
查 |
| |||||||
改 | list1[下标] list1[切片] list1[-1] # list1的最后一个元素
|
(一维)列表的反转
|
列表的排序 | ||||||
demo 2:
|
列表list与字符串str的转换
|
| |||||
|
|
元组tuple
tuple不可修改其中的元素,而list可以,其余操作与list相同。
- 创建元组tuple
tuple( iterable ) |
iterable -- 要转换为元组的可迭代序列 |
当创建只有一个元素的元组时,tuple1 = (1)会被视为整型而非元组。
解决方法:加一个逗号
tuple1 = (1, ) |
字典dict
预分配与初始化
创建空字典 |
| |||
逐对键值对初始化字典 |
| |||
(序列,默认值)初始化字典 | dict.fromkeys(seq[, val]) 返回一个新字典,以序列 seq 中的元素作为字典的键,val 为字典所有键值对应的初始值 | |||
(序列,序列)初始化字典 |
| |||
合并字典 |
|
增删查改
增 |
| |||||||
删 |
| |||||||
查 |
| |||||||
改 | dict1[value1] |
视图
对dict本身的修改会影响到"视图"
dict.keys() | key |
dict.values() | value |
dict.items() | key-value |
demo 使用"视图"访问dict中的key-value:
lang_dict = {1: 'C++', 2: 'Java', 3: 'Python'} for idx, val in lang_dict.items(): print(str(idx), val) |
输出: 1 C++ 2 Java 3 Python |
demo:
- 将0~9、26个小写字母和"_"添加到字典中
# 用dict.update()方法更新字典 import string
dicts = dict.fromkeys(string.digits, False) dicts.update(dict.fromkeys(string.ascii_lowercase, False)) dicts['_'] = False |
或者
# 用{**, **}的形式合并字典 import string
dict_digits = dict.fromkeys(string.digits, False) dict_alphabet = dict.fromkeys(string.ascii_lowercase, False) dicts={**dict_digits, **dict_alphabet} dicts['_'] = False |
- 将函数(或者lambda表达式)作为键值,实现switch(实际上是比switch更快的二叉平衡树)
x = int(input("Enter the 1st number: ")) y = int(input("Enter the 2nd number: "))
def operator(o): dict_oper ={ '+': lambda x, y: x + y, '-': lambda x, y: x - y, '*': lambda x, y: x * y, '/': lambda x, y: x / y } return dict_oper.get(o)(x, y)
if __name__ == '__main__': o = input("Enter operation here(+ - * /): ") print(operator(o)) |
集合set
set中的对象不变且可哈希 |
frozenset(冻结的集合),不可增删元素 |
预分配与初始化
创建空集合 | set1 = set() | ||
由序列seq初始化集合 |
|
增删查改
增 |
|
删 |
|
查 |
|
改 |
|
集合的运算
判断是否没有公共元素 |
| |||
判断子集 |
| |||
判断超集 |
| |||
并集 |
| |||
交集 |
| |||
差集 |
| |||
对称差 |
|
demo 求两个字典的相同的键值(即求键值的交集):
d1_keys = set(d1.keys()) d2_keys = set(d2.keys()) set1 = d1_keys.intersection(d2_keys) |
运算和控制结构
运算符
bool() 函数的特殊用法
False None 0 "" () [] {} | False |
Python中,False、None、0和空的数据结构经bool() 函数转换后均为False。
非零非空的数据结构经bool() 函数转换后为True。
比较运算符的连用
记比较运算符为 op,
若 a op1 b op2 c,
则 (a op1 b) and (b op2 c)
[表达式1, 表达式2][表达式3]
若表达式3为True,则执行表达式2;
若表达式3为False,则执行表达式1。
相当于C++中的三元运算符 ? : 。
- 当表达式1、表达式2为数值或布尔值
[False, True][4 > 3] |
>>> True |
- 当表达式1、表达式2为函数或者lambda表达式
要在列表表达式后加 () 表示函数。
def false(): print("判断错误")
def true(): print("判断正确")
[false, true][1 > 9]() |
>>> '判断错误' |
if
if <expr>: <statement(s)> elif <expr>: <statement(s)> else: <statement(s)> |
while循环
while 循环可使用 else 语句
while … else 在条件语句为 false 时执行 else 的语句块。
while <expr>: <statement(s)> else: <additional_statement(s)> |
推导式/解析式
enumerate(sequence, [start = 0]) |
enumerate() 函数用于将一个可遍历的数据对象(如列表、元组或字符串)组合为一个索引序列, |
|
列表推导式
demo 产生10个100以内的随机数:
from random import randint list1 = [randint(1, 100) for i in range(10)] |
字典推导式
demo 为列表中的元素标号,存入字典中:
lang_list = ["C++", "Java", "Python"] lang_dict = {idx: lang for idx, lang in enumerate(lang_list, 1)} # 值:{1: 'C++', 2: 'Java', 3: 'Python'} |
demo 计算两个列表对应元素之和:
原数据 | a = [1,2,3,4] b = [9,8,7,6] |
列表推导式 | c = [a[i] + b[i] for i in range(len(a))] |
map() 函数 | c = list(map(lambda x, y: x + y, a, b)) |
demo 统计列表元素出现的次数,结果存入字典中:
原数据 | lang_list = ["C++", "Java", "Python", "C++"] |
使用 dict.get() | lang_dict = {} for item in lang_list: lang_dict[item] = lang_dict.get(item, 0) + 1 |
字典推导式 | lang_dict = {elem: lang_list.count(elem) for elem in set(lang_list)} |
结果 | {'C++': 2, 'Python': 1, 'Java': 1} |















浙公网安备 33010602011771号