除开函数外的 python 基础知识总汇,用于复习及查看,写的会很简略

# 基础知识

普通的除法:1/2 0.5
整除: 1//2 0
取模:%
乘方:23 (-32 等同于 -(3**2))

十六进制:0xAF
八进制:010

变量无需声明即可使用

1
2
3
x = 3 
x * 2
output : 6

变量名命名同 C 语言

print 在 python2 是语句,在 python3 中是函数,所以应当加上()

1
2
3
4
5
6
7
8
9
>>> input ( "The meaning of life: " )
The meaning of life 42
42
>>> x = input ( "x: " )
x: 34
>>> y = input ( "y: " )
y : 42
>>> print ( x * y )
1428
1
2
>>> pow ( 2 , 3 ) 
8

round 函数会把浮点数四舍五入为最接近的整数值 ( py2 与 py3 对于 0.5 的取值有所不同)
abs 绝对值函数

可以用变量来引用函数

1
2
3
4
5
6
7
8
import math 
math.floor( 32.9 )

from math import floor
floor

foo = math.sqrt
foo ( 4 )

math 中的 sqrt 不支持复数运算而 cmath 中支持

1
2
3
4
5
6
>>> import cmath
>>> cmath.sqrt ( -1 )
1j
# 没有使用from 。。。import 。。。是因为一旦使用了这个语句那么就无法使用普通的sqrt了
>>> (1+3j) * (9+4j)
(-3+31j)

字符串是值,就像数字一样,单引号和双引号没有本质区别
\ 与 C 语言中一样使用
字符串之间可以拼接

1
"hello," + "world"

转换成字符串有两种方式
str 将对象转换成用户看的,repr 转换成 python 表达式

1
2
3
4
print ( repr ( "hello world" ) )
'hello world'
print ( str ( "hello world " ) )
hello world

长字符串:

1
2
3
4
5
6
7
print ( """ This is a very long string
It continues here
And it's not over yet
Still here """ )
# 换行符可以被转义
print ( """ hello \
world """ )

原始字符串

1
2
3
path = 'c:\\program\\fnord'
path = r'c:\ll"
# r紧贴'且字符串末尾不是\

# 序列

列表和元组的区别在于列表可以修改而元组不可以

通用的序列操作:索引,分片,加,乘
索引同数组,数组最后一个元素的位置标号为 - 1 如:greeting [-1]
print 的返回值是一个序列,所以我们可以如此调用

1
fourth = input ( "Year: " )[3] 

列表可以相加与相乘,例如

1
2
3
4
5
6
7
endings = ['st','nd','rd']+17 * ['th',] \ 
+ ['st','nd','rd']+ 7 * ['th',] \
+ ['st]
[1,2,3] + [4,5,6]
= [1,2,3,4,5,6]
# 初始化一个长度为10 的列表
sequence = [None] * 10

分片
numbers [-3:-1]
numbers[-3:]
numbers[0::2]
numbers[-1:0:-2]

成员资格:in 函数

长度:len
最大值:max
最小值:min

# 列表

list 函数 对立: ''.join (somelist)
删除元素 del names [2]
分片赋值:可以使用与原序列不等长的序列将分片替换(可以用来删除某一段)

1
2
numbers[1:1] = [2, 3 ,4 ]
numbers[1:5] = []

.append( )
.count ( )
.extend ( ) 追加一个序列
.index ( ) 找出第一个匹配项索引位置
.insert (i , value) 插入
.pop ( ) 移除最后一个值并返回值
.remove ( ) 移除第一个匹配项
.reserve ( ) 反向存放
.sort ( ) 会该表原来的列表修改,也就是说修改副本不会影响原本,反之不然
sort 里面可以有参数如 cmp,key=len,reserve=True
sorted ( ) 返回已排序的列表副本

# 元组

如果你用逗号分隔了一些值,那么你就自动创建了元组
tuple ( ) 类比于 list

# 字符串

1
2
3
format = "hello , %s , %s enough for ya!" 
values = ( 'world' , 'Hot' )
print ( format % values )

模板字符串:

1
2
3
4
5
6
7
8
9
10
11
12
from string import Template
s = Template ( '$x , glorious $x ' )
s.substitute ( x = 'slum' )

s = Template ( "It's ${x}tatic" )
s.substitute ( x = 'slum' )

s = Template ( 'A $thing must never $action' )
d = { }
d['thing'] = 'gentleman'
d['action'] = 'show his socks'
s.substitute ( d )

转换符包括(注意顺序)

  1. %
  2. 转换标志 ,- : 左对齐,+ : 正负号,"" 正数前保留空格,0:位数不够用零来凑
  3. 最小值宽(若为 * 则从元组读入)例如 '%. * s' % (5 , 'dada')
  4. . 后跟精确度

字符串方法:
.find ("target" ,start ,end) 查找字串 (start end 可忽略)
sth.join ( )
.lower ( ) 转换成小写
.title () //.capwords () 标题
.replace (A , B) 查找并替换
.split ( ) join 的逆运算
.strip () 去除两侧空格,可自己添加例如.strip ( ' * !')
.translate ( ) && .maketrans python3 有所区别,运用时自己网上查

# 字典

创建: phonebook = {'A' : 1 , 'B' : 2 ......}
dict (序列)
len ( )
d[k]
d[k] = v
del d[k]
k in d 检查 d 中是否有含有键为 k 的项
字典可以嵌套,类比于多维数组

1
2
3
template = "%(title)s , %(ooo)d " 
data = { 'title' : 'fff' , 'ooo' : 1 }
print ( template % data )

.clear ( ) 原本操作
.copy ( ) 替换值不变原本,修改值会变
.deepcopy (copy 函数库中) 复制其包含的所有值
.fromkeys ([] , 'default' ) or dict.fromkeys ( [ ] , 'default' ) 给给定的键建立新的字典
.get ('value') 访问不存在的项返回 None
.has_key ('value') 查询是否有此键,py3 中被__contains__(key) 替代
.items () 把所有项以列表形式返回,且每一项返回 (键,值) 的形式
.iteritems ( ) 返回迭代器
.keys ( ) 返回键 , 同上
.itereys ( ) 同上
.values ( ) 同上
.itervalues ( ) 同上
.pop (' 键 ') 删除对应的键值对
.popitem ( ) 随机弹出项
.setdefault (键,'default')
.update (x) 有则不变,无则加之

# 条件、循环和其它语句

print: , 即空格,print 即换行(除非在最后加,)
import somemodule
from sm import sf
from sm import sf as (可避免重名)

解包时可在最后用 * rest 把剩下的值都存入 rest

+=

  • =
1
2
3
4
5
6
7
8
9
if ... : 
代码块
代码块
elif ... :
代码块
代码块
else
代码块
代码块

x is y x 和 y 是同一对象
x is not y ...
x in y
x not in y
可以使用 x<y<z

断言:assert 判断条件
如果不满足直接程序崩溃

while 判断 :
代码块
代码块

for i in sequence :
...
...

range ( 3 )
[ 0 , 1 , 2 , 3 ]

xrange ( 3 )
同 range 只不过是一个一个给出的,更为高效