参考链接:廖雪峰的官方网站
r''
表示''
内部的字符串默认不转义:>>> print('\\\t\\')
\ \
>>> print(r'\\\t\\')
\\\t\\
'''...'''
来表示多行内容:>>> print('''line1 ... line2 ... line3''')
line1
line2
line3
但如果是写在.py文件中的话,就没有…提示符了:
print('''line1 line2 line3''')
''' '''
也可以用来表示多行注释True
和False
,空值用None
表示,空的str, tuple, list, dict
都是False
PI = 3.14159265359
,但其实这个值还是可以被修改的a = 'ABC'
表示内存中的变量a
指向内存中的常量'ABC'
import sys
def equal_float(a, b):
return abs(a - b) <= sys.float_info.epsilon
#最小浮点数间隔
print(equal_float(1.0, 1.0))
True
round()
表示四舍五入,ceil()
表示向上取整,floor()
表示向下取整import math
print(round(2.4))
print(round(2.6))
print(math.ceil(2.2))
print(math.floor(2.9))
2
3
3
2
+,-,*,%
与c++同/
结果是浮点数>>> 6 / 5
1.2
//
是整数除法>>> 6 // 5
1
x ** y
求x的y次幂>>> 2 ** 3
8
and or not
A
用Unicode编码,只需要在前面补0就可以,因此,A
的Unicode编码是00000000 01000001
ord
和chr
函数来进行字符与编码之间的转换,python2.x中默认支持Ascii码,python3.x中默认支持Unicode编码Python2.x
>>> chr(65)
'A'
>>> ord('A')
65
>>> unichr(20013)
u'\u4e2d'
>>> ord(u'\u4e2d')
20013
>>> ord('中')
Traceback (most recent call last):
File "" , line 1, in
TypeError: ord() expected a character, but string of length 2 found
>>> chr(20013)
Traceback (most recent call last):
File "" , line 1, in
ValueError: chr() arg not in range(256)
Python3.x
>>> chr(65)
'A'
>>> ord('A')
65
>>> chr(20013)
'中'
>>> ord('中')
20013
>>> ord('\u4e2d')
20013
>>> 'Hello, %s' % 'world'
'Hello, world'
>>> 'Hi, %s, you have $%d.' % ('Michael', 1000000)
'Hi, Michael, you have $1000000.'
str
和bytes
进行转换:>>> '中文'.encode('utf-8')
b'\xe4\xb8\xad\xe6\x96\x87'
a = "1234"
print(a[2])
a[2] = "3" #error
in, not in
来判断是否为子串:a = "Hello"
print("el" in a)
b = "Python"
print("th" not in b)
True
False
>>> classmates = ['Michael', 'Bob', 'Tracy']
>>> classmates
['Michael', 'Bob', 'Tracy']
>>> classmates[1]
'Bob'
>>> classmates[-1]
'Tracy'
append
来向list末尾增加元素,使用insert
来向指定位置插入元素,使用pop
来删除list元素(使用pop
会输出被删除的元素),默认删除末尾元素,也可以指定位置:>>> classmates.pop()
'Tracy'
>>> L = ['Apple', 123, True]
>>> s = ['python', 'java', ['asp', 'php'], 'scheme']
>>> len(s)
4
>>> classmates = 'Michael', 'Bob', 'Tracy'
,
,否则会把()
理解为数学符号:>>> t = (1)
>>> t
1
>>> t = (1,)
>>> t
(1,)
>>> t = ('a', 'b', ['A', 'B'])
>>> t[2][0] = 'X'
>>> t[2][1] = 'Y'
>>> t
('a', 'b', ['X', 'Y'])
list
和tuple
可以使用乘法操作,但dict
不行:li = [1,]
li = li * 3
print(li) #[1, 1, 1]
t = (1, 2)
t = t * 3
print(t) #(1, 2, 1, 2, 1, 2)
d = {"1":1, "2":2}
d = d * 3 #TypeError: unsupported operand type(s) for *: 'dict' and 'int'
>>> a = 1, 2, 3
>>> b = a
>>> b
(1, 2, 3)
>>> a += 4,
>>> b
(1, 2, 3)
>>> a
(1, 2, 3, 4)
>>> a = [1, 2, 3]
>>> b = a
>>> a += [4,]
>>> b
[1, 2, 3, 4]
>>> array = [1, 2, 3]
>>> m = [array] * 3
>>> m
[[1, 2, 3], [1, 2, 3], [1, 2, 3]]
>>> m[0][1] = 4
>>> m
[[1, 4, 3], [1, 4, 3], [1, 4, 3]]
#上面这种方法得到是并不是二维数组,m[0],m[1],m[2]指向相同的一维数组array
#正确做法
>>> m = [[i * 3 + j for j in range(3)] for i in range(3)]
>>> m
[[0, 1, 2], [3, 4, 5], [6, 7, 8]]
if
、elif
、else
,elif
是else if
的缩写。age = 3
if age >= 18:
print('adult')
elif age >= 6:
print('teenager')
else:
print('kid')
if
、elif
、else
条件判断语句时,除了要注意在语句末尾加上冒号:
,还要注意另起一行的缩进,Python中用缩进来表示代码块names = ['Michael', 'Bob', 'Tracy']
for name in names:
print(name)
for else
语句,当for
语句正常结束,就会执行else
语句;否则(遇到break
)就不执行else
语句sites = ["Baidu", "Google","IBM","Taobao"] #list
for site in sites:
if site == "IBM":
print("OK")
break
print("site: " + site)
else:
print("No break")
print("Done!")
site: Baidu
site: Google
OK
Done!
>>> d = {'Michael': 95, 'Bob': 75, 'Tracy': 85}
>>> d['Michael']
95
get
方法可用于判断元素是否存在于dict中,存在会返回1,不存在则会返回None或者指定的值>>> d.get('Thomas')
>>> d.get('Thomas', -1)
-1
pop(key)
方法可以删除对应的key和value>>> key = [1, 2, 3]
>>> d[key] = 'a list'
Traceback (most recent call last):
File "" , line 1, in
TypeError: unhashable type: 'list'
(1, 2, 3)
是可以作为dict的key的,但(1, [2, 3])
则不能作为key>>> phonebook = {'Alice': 2341, 'Beth': 9102, 'Cecil': 3258}
>>> "Cecil's phone number is %(Cecil)s." % phonebook
"Cecil's phone number is 3258."
>>> "Cecil's phone number is %(Cecil)d." % phonebook
"Cecil's phone number is 3258."
>>> "Cecil's phone number is %(Cecil)f." % phonebook
"Cecil's phone number is 3258.000000."
字典的keys(), items(), values()
分别可以获得字典的键、键-值对、值
set相当于C++的unordered_set
,是哈希表,元素不可重复且必须可哈希
>>> s = set([1, 1, 2, 2, 3, 3])
>>> s
{1, 2, 3}
add
和remove
可分别用于增加和删除set中的key>>> a = 'abc'
>>> a.replace('a', 'A')
'Abc'
>>> a
'abc'
替换成功了,但a
变量指向的值仍是'abc'
,a.replace('a','A')
语句是作用在字符串对象'abc'
的,但实际上并没有修改它的值,而是新建了一个字符串对象'Abc'
并返回。
所以,对于不可变对象,调用对象自身的任何方法都不会改变对象本身,而是会产生的新的对象并返回。