1、ord()函数获取字符的整数表示,chr()函数把编码转换为对应的字符:
ord(‘A’)
65ord(‘中’)
20013chr(66)
‘B’chr(25991)
‘文’
把bytes变为str,就需要用decode()方法:
b’ABC’.decode(‘ascii’)
‘ABC’b’\xe4\xb8\xad\xe6\x96\x87’.decode(‘utf-8’)
‘中文’
如果bytes中包含无法解码的字节,decode()方法会报错:
b’\xe4\xb8\xad\xff’.decode(‘utf-8’)
Traceback (most recent call last):
…
UnicodeDecodeError: ‘utf-8’ codec can’t decode byte 0xff in position 3: invalid start byte
如果bytes中只有一小部分无效的字节,可以传入errors='ignore’忽略错误的字节:
b’\xe4\xb8\xad\xff’.decode(‘utf-8’, errors=‘ignore’)
‘中’
要计算str包含多少个字符,可以用len()函数:
len(‘ABC’)
3len(‘中文’)
2
len()函数计算的是str的字符数,如果换成bytes,len()函数就计算字节数:
len(b’ABC’)
3len(b’\xe4\xb8\xad\xe6\x96\x87’)
6len(‘中文’.encode(‘utf-8’))
6
list是一个可变的有序表,所以,可以往list中追加元素到末尾:
classmates.append(‘Adam’)
classmates
[‘Michael’, ‘Bob’, ‘Tracy’, ‘Adam’]
也可以把元素插入到指定的位置,比如索引号为1的位置:
classmates.insert(1, ‘Jack’)
classmates
[‘Michael’, ‘Jack’, ‘Bob’, ‘Tracy’, ‘Adam’]
要删除list末尾的元素,用pop()方法:
classmates.pop()
‘Adam’classmates
[‘Michael’, ‘Jack’, ‘Bob’, ‘Tracy’]
要删除指定位置的元素,用pop(i)方法,其中i是索引位置:
classmates.pop(1)
‘Jack’classmates
[‘Michael’, ‘Bob’, ‘Tracy’]
要把某个元素替换成别的元素,可以直接赋值给对应的索引位置:
classmates[1] = ‘Sarah’
classmates
[‘Michael’, ‘Sarah’, ‘Tracy’]
list里面的元素的数据类型也可以不同,比如:
L = [‘Apple’, 123, True]
list元素也可以是另一个list,比如:
s = [‘python’, ‘java’, [‘asp’, ‘php’], ‘scheme’]
len(s)
一个“可变的”tuple:
t = (‘a’, ‘b’, [‘A’, ‘B’])
t[2][0] = ‘X’
t[2][1] = ‘Y’
t
(‘a’, ‘b’, [‘X’, ‘Y’])
age = 3
if age >= 18:
print(‘adult’)
elif age >= 6:
print(‘teenager’)
else:
print(‘kid’)
注意不要少写了冒号:。
elif是else if的缩写
input()返回的数据类型是str,str不能直接和整数比较,必须先把str转换成整数。Python提供了int()函数来完成这件事情:
s = input('birth: ')
birth = int(s)
d = {‘Michael’: 95, ‘Bob’: 75, ‘Tracy’: 85}
d[‘Michael’]
95
in判断key是否存在:
‘Thomas’ in d
False
二是通过dict提供的get()方法,如果key不存在,可以返回None,或者自己指定的value:
d.get(‘Thomas’)
d.get(‘Thomas’, -1)
-1
注意:返回None的时候Python的交互环境不显示结果。
要删除一个key,用pop(key)方法,对应的value也会从dict中删除:
d.pop(‘Bob’)
75d
{‘Michael’: 95, ‘Tracy’: 85}
请务必注意,dict内部存放的顺序和key放入的顺序是没有关系的。
重复元素在set中自动被过滤
通过add(key)方法可以添加元素到set中,可以重复添加,但不会有效果:
s.add(4)
s
{1, 2, 3, 4}s.add(4)
s
{1, 2, 3, 4}
通过remove(key)方法可以删除元素:
s.remove(4)
s
{1, 2, 3}
set可以看成数学意义上的无序和无重复元素的集合,因此,两个set可以做数学意义上的交集、并集等操作:
s1 = set([1, 2, 3])
s2 = set([2, 3, 4])
s1 & s2
{2, 3}s1 | s2
{1, 2, 3, 4}
比如list,对list进行操作,list内部的内容是会变化的,比如:
a = [‘c’, ‘b’, ‘a’]
a.sort()
a
[‘a’, ‘b’, ‘c’]
而对于不可变对象,比如str,对str进行操作呢:
a = ‘abc’
a.replace(‘a’, ‘A’)
‘Abc’a
‘abc’
虽然字符串有个replace()方法,也确实变出了’Abc’,但变量a最后仍是’abc’,应该怎么理解呢?
我们先把代码改成下面这样:
a = ‘abc’
b = a.replace(‘a’, ‘A’)
b
‘Abc’a
‘abc’
在Python中,定义一个函数要使用def语句,依次写出函数名、括号、括号中的参数和冒号:,然后,在缩进块中编写函数体,函数的返回值用return语句返回。
我们以自定义一个求绝对值的my_abs函数为例:
def my_abs(x):
if x >= 0:
return x
else:
return -x