花三天时间系统学习了一下python语法... 奥妙重重
输入输出
在一行输入多个值
1 | a, b, c = map(int,input().split(' ')) |
列表和元组
声明列表
1 | a = [1,2,3,4] |
列表切片
1 | numbers[7:10] #左开右闭 |
序列运算
1 | [1,2,3] + [4,5,6] |
成员资格:in
1 | 'mlh', 'foo', 'bar'] users = [ |
长度、最小值、最大值
1 | len(numbers) |
删除元素
1 | del names[2] |
给切片赋值
1 | list('Perl') name = |
列表方法
1 | lst.append(4) |
元组
1 | 3 * (40 + 2,) |
字符串
- 字符串是不可变的,所以元素赋值和切片赋值非法
字符串原始形态
使用repr()函数打印字符串在代码中的样子,str()打印希望用户看到的样子。
代码换行
在代码或字符串中加上反斜杠就可以在代码中换行。
设置字符串格式
1 | format = "Hello, %s. %s enough for ya?" >>> values = ('world', 'Hot') |
数字输出格式
1 | "The number is {num:f}".format(num=42) |
类型 | 含义 |
---|---|
b | 二进制 |
c | unicode |
d | 十进制数 |
e | 科学计数法(e表示指数) |
E | 科学计数法(E表示指数) |
f/F | 定点数 |
g/G | 自动选择定点数和科学计数法 |
o | 八进制数 |
s | 默认 |
x/X | 十六进制 |
%· | 百分比值 |
宽度 精度 千位分隔符
1 | "{num:10}".format(num=3) |
符号,对齐,用0填充
1 | print('{0:<10.2f}\n{0:^10.2f}\n{0:>10.2f}'.format(pi)) |
字符串居中
1 | "The Middle by Jimmy Eat World".center(39) |
查找和替换子串
1 | 'With a moo-moo here, and a moo-moo there'.find('moo', 0, 16) #可指定起点和终点 左闭右开 |
在序列的间隔插入字符join
1 | '', 'usr', 'bin', 'env' dirs = |
把字符串拆分成序列
1 | '1+2+3+4+5'.split('+') |
大小写
lower 变为小写
title 变为词首大写
upper 变为大写
判断字符串是否满足条件
isalnum、isalpha、isdecimal、isdigit、isidentifier、islower、isnumeric、 isprintable、isspace、istitle、isupper
字典
创建字典
1 | phonebook = {'Alice': '2341', 'Beth': '9102', 'Cecil': '3258'} |
字典方法
1 | x.clear() |
条件、循环及其他语句
序列解包
1 | 1, 2, 3 x, y, z = |
elif
1 | num = int(input('Enter a number: ')) if num > 0: |
链式比较
python允许链式比较:1 <= number <= 10
断言assert
1 | 10 age = |
迭代字典
1 | d = {'x': 1, 'y': 2, 'z': 3} |
迭代时获取索引
1 | for index, string in enumerate(strings): |
sorted和reversed:返回修改过的结果
1 | sorted([4, 3, 6, 8, 3]) |
循环else
1 | from math import sqrt |
简单推导
1 | for x in range(10) if x%3 == 0] [x*x |
什么都不做 pass
1 | if name == 'Ralph Auldus Melish': |
del
1 | 1 x = |
执行代码字符串exec
1 | from math import sqrt |
执行代码表达式eval
1 | eval(input("Enter an arithmetic expression: ")) |
抽象
给函数编写文档
1 | def square(x): |
关键词参数
1 | 'Mr. Brainsample', hour=10, minute=20, day=13, month=5) store(patient= |
作用域嵌套
1 | def foo(): |
魔法
1 | class Bird: |
模块
集合
1 | set(range(10)) |
Heap 堆
函数 | 描述 |
---|---|
heappush(heap, x) | 将x压入堆中 |
heappop(heap) | 从堆中弹出最小的元素 |
heapify(heap) | 让列表具备堆特征 |
heapreplace(heap, x) | 弹出最小的元素,并将x压入堆中 |
nlargest(n, iter) | 返回iter中n个最大的元素 |
nsmallest(n, iter) | 返回iter中n个最小的元素 |
collections 双端队列
1 | from collections import deque |
time 时间
索引 | 字段 | 值 |
---|---|---|
0 | 年 | |
1 | 月 | |
2 | 日 | |
3 | 时 | |
4 | 分 | |
5 | 秒 | |
6 | 星期 | |
7 | 儒略日 | 1~366 |
8 | 夏令时 | 0、1或-1 |
time中的重要函数
函数 | 描述 |
---|---|
asctime([tuple]) | 将时间元组转换为字符串 |
localtime([secs]) | 将秒数转换为表示当地时间的日期元组 |
mktime(tuple) | 将时间元组转换为当地时间 |
sleep(secs) | 休眠(什么都不做)secs秒 |
strptime(string[, format]) | 将字符串转换为时间元组 |
time() | 当前时间(从新纪元开始后的秒数,以UTC为准) |
random
函数 | 描述 |
---|---|
random() | 返回一个0~1(含)的随机实数 |
getrandbits(n) | 以长整数方式返回n个随机的二进制位 |
uniform(a, b) | 返回一个a~b(含)的随机实数 |
randrange([start], stop, [step]) | 从range(start, stop, step)中随机地选择一个数 |
choice(seq) | 从序列seq中随机地选择一个元素 |
shuffle(seq[, random]) | 就地打乱序列seq |
sample(seq, n) | 从序列seq中随机地选择n个值不同的元素 |