string模块
string模块中的常量
>>> import string
>>> string.digits # 十进制数
'0123456789'
>>> string.hexdigits # 十六进制数
'0123456789abcdefABCDEF'
>>> string.octdigits # 八进制数
'01234567'
>>> string.letters # 英文字母
'abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ'
>>> string.lowercase # 小写英文字母
'abcdefghijklmnopqrstuvwxyz'
>>> string.uppercase # 大写英文字母
'ABCDEFGHIJKLMNOPQRSTUVWXYZ'
>>> string.printable # 可输出在屏幕上的字符
'0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ!"#$%&\'()*+,-./:;<=>?@[\\]^_`{|}~ \t\n\r\x0b\x0c'
>>> string.punctuation # ASCII符号
'!"#$%&\'()*+,-./:;<=>?@[\\]^_`{|}~'
>>> string.whitespace # 空白字符
'\t\n\x0b\x0c\r '
string.atof(s)
将字符串转为浮点型数字
>>> string.atof('3.14')
3.14
>>> string.atof('128')
128.0
string.atoi(s, base=10)
将字符串s转为整型数字, base指定数字的进制, 默认为十进制
>>> string.atoi('1024')
1024
>>> string.atoi('52', base=10)
52
>>> string.atoi('FF', base=16)
128
>>> string.atoi('80', base=8)
64
>>> string.atoi('110', base=2)
6
>>> string.atoi('21', base=6)
13
string.capwords(s, sep=' ')
将字符串中开头和sep后面的字母变成大写
>>> string.capwords('this is a dog')
'This Is A Dog'
>>> string.capwords('this is a dog', sep=' ')
'This Is A Dog'
>>> string.capwords('this is a dog', sep='s')
'This is a dog'
>>> string.capwords('this is a dog', sep='o')
'This is a doG'
string.maketrans(s, r)
创建一个s到r的字典, 可以使用字符串对象的translate()方法来使用
>>> tsl_1 = string.maketrans('1234', 'abcd')
>>> tsl_2 = string.maketrans('4569', 'xyzt')
>>> s = '123456789'
>>> s.translate(tsl_1)
'abcd56789'
>>> s.translate(tsl_2)
'123xyz78t'
>>> tsl_1
{'1': 'a', '3': 'c', '2': 'b', '4': 'd'}
>>> tsl_2
{'5': 'y', '9': 't', '4': 'x', '6': 'z'}
列表对象的常用方法
列表的所有除魔法方法外的函数有: ['append', 'clear', 'copy', 'count', 'extend', 'index', 'insert', 'pop', 'remove', 'reverse', 'sort']
下面将逐一介绍它们:
- append()
在列表的最后添加一个元素
>>> test = []
>>> test
[]
>>> test.append(6)
>>> test
[6]
>>> test.append('I love FishC!')
>>> test
[6, 'I love FishC!']
- clear()
在不改变内存中位置的情况下清空列表
>>> raw = [1, 2, 3]
>>> same = raw
>>> raw
[1, 2, 3]
>>> same
[1, 2, 3]
>>> raw.clear()
>>> raw
[]
>>> same
[]
有人说: "何必那么复杂, 直接raw = []不就完事了吗?"
但是, 这是不同的, 测试:
>>> raw = [1, 2, 3]
>>> same = raw
>>> raw
[1, 2, 3]
>>> same
[1, 2, 3]
>>> raw = []
>>> raw
[]
>>> same
[1, 2, 3]
>>> id(raw) == id(same) # 检测它们在内存中在不在同一个地址
>>> False
- copy()
浅拷贝(拓展内容见>>>这里<<<)
>>> raw = [1, 2, 3]
>>> same = raw
>>> different = raw.copy()
>>> raw
[1, 2, 3]
>>> same
[1, 2, 3]
>>> different
[1, 2, 3]
>>> raw.append(4)
>>> raw
[1, 2, 3, 4]
>>> same
[1, 2, 3, 4]
>>> different
[1, 2, 3]
>>> id(raw) == id(same)
True
>>> id(raw) == id(different)
False
- count()
统计某一个元素在列表中的个数
>>> test = [1, 1, 2, 3, 1, 2]
>>> test.count(1)
3
>>> test.count(2)
2
>>> test.count(3)
1
- extend()
将一个可迭代对象的每一项添加到列表的最后
>>> test = [1, 2, 3]
>>> test
[1, 2, 3]
>>> test.extend([11, 22, 33])
>>> test
[1, 2, 3, 11, 22, 33]
- index()
返回某个元素在列表中的下标
>>> test = [3, 8, 4, 2, 1]
>>> test
[3, 8, 4, 2, 1]
>>> test.index(2)
3
>>> test.index(8)
1
>>> test.index(4)
2
- insert()
将某个元素插在列表的某个位置
形式: ???.insert(位置, 元素)
>>> test = [1, 1, 2, 3, 5, 8]
>>> test
[1, 1, 2, 3, 5, 8]
>>> test.insert(3, 10)
>>> test
[1, 1, 2, 10, 3, 5, 8]
>>> test.insert(5, 100)
>>> test
[1, 1, 2, 10, 3, 100, 5, 8]
- pop()
删除列表中指定位置的元素并返回, 默认位置为-1(最后)
>>> test = [1, 1, 9, 3, 6, 8]
>>> test
[1, 1, 9, 3, 6, 8]
>>> test.pop()
8
>>> test
[1, 1, 9, 3, 6]
>>> test.pop(2)
9
>>> test
[1, 1, 3, 6]
- remove()
移除列表中第一个指定的元素
>>> test = [1, 1, 2, 3, 4, 3]
>>> test
[1, 1, 2, 3, 4, 3]
>>> test.remove(1)
>>> test
[1, 2, 3, 4, 3]
>>> test.remove(3)
>>> test
[1, 2, 4, 3]
- reverse()
在不改变内存中位置的情况下反转列表
>>> test = [1, 1, 2, 3, 5, 8]
>>> test
[1, 1, 2, 3, 5, 8]
>>> test.reverse()
>>> test
[8, 5, 3, 2, 1, 1]
- sort()
给列表排序, 可选参数: reverse(从大到小), key(为列表中每一个值进行key的计算, 按返回值大小排序
>>> test1 = [8, 3, -9, 2, 5, 3]
>>> test1
[8, 3, -9, 2, 5, 3]
>>> test1.sort()
>>> test1
[-9, 2, 3, 3, 5, 8]
>>> test1.sort(reverse = True)
>>> test1
[8, 5, 3, 3 2, -9]
>>> test2 = ['z', 'abcde', 'cde']
>>> test2
['z', 'abc', 'cdeeee']
>>> test2.sort() # 默认按ASCII值大小排序
>>> test2
['abc', 'cdeeee', 'z']
>>> test2.sort(key = len) # 要求按长度排序
>>> test2
['z', 'abc', 'cdeeee']
random模块
random模块有以下常用的函数: ['random', 'uniform', 'randint', 'choice', 'sample', 'randrange', 'shuffle']
#########################
首先你要了解……
x = [1, 10] 代表 1 <= x <= 10
x = [1, 10) 代表 1 <= x < 10
x = (1, 10] 代表 1 < x <= 10
x = (1, 10) 代表 1 < x < 10
- random()
随机生成一个 [0, 1) 的浮点数
>>> import random
>>> random.random()
0.5081351950612368
2.uniform(a, b)
随机生成一个 [a, b] 的浮点数
>>> import random
>>> random.uniform(10, 20)
19.44935373514052
>>> random.uniform(20, 10)
16.220864603020107
- randint(a, b)
随机生成一个 [a, b] 的整数, a必须大于等于b
>>> import random
>>> random.randint(0, 9)
9
>>> random.randint(0, 9)
7
- choice(seq)
seq为可迭代对象, 从中抽取一项
>>> import random
>>> seq = ['i', 'love', 'fishc']
>>> random.choice(seq)
'i'
>>> random.choice(seq)
'fishc'
- sample(population, k)
population为可迭代对象, 从中抽取k项, 0 <= k <= len(population)
>>> import random
>>> population = [1, 2, 3, 4, 5]
>>> random.sample(population, 2)
[1, 3]
>>> random.sample(population, 3)
[1, 2, 5]
- randrange(start[, stop[, step]])
相当于random.choice(range(start[, stop[, step]]))
>>> import random
>>> random.randrange(0, 100, 25)
25
>>> random.randrange(0, 100, 25)
75
- shuffle(x)
在不改变内存中位置的情况下打乱x
>>> import random
>>> x = [1, 2, 3, 4, 5]
>>> random.shuffle(x)
>>> x
[3, 1, 2, 4, 5]
copy模块
这个模块有两个函数, copy和deepcopy:
- copy.copy (浅拷贝)只拷贝父对象,不会拷贝对象的内部的子对象。
- copy.deepcopy (深拷贝) 拷贝对象及其子对象。也就是说, 如果列表里还有列表, deepcopy也会将其拷贝, 但是copy做不到这一点
看了上面的解释, 大家可能看得云里雾里, 这里有一个很好的例子:
import copy
a = [1, 2, 3, 4, ['a', 'b']] #原始列表
print('原始列表 =', a)
b = a # 把a赋值给b
c = copy.copy(a) # 浅拷贝a, 等效于a[:]
d = copy.deepcopy(a) # 深拷贝a
a.append(5) # 修改对象a
a[4].append('c') # 修改对象a中的列表['a', 'b']
print('修改后的原始列表 =', a)
print('赋值 =', b)
print('浅拷贝 =', c)
print('深拷贝 =', d)
原始列表 = [1, 2, 3, 4, ['a', 'b']]
修改后的原始列表 = [1, 2, 3, 4, ['a', 'b', 'c'], 5]
赋值 = [1, 2, 3, 4, ['a', 'b', 'c'], 5]
浅拷贝 = [1, 2, 3, 4, ['a', 'b', 'c']]
深拷贝 = [1, 2, 3, 4, ['a', 'b']
else的多种语法
- if…else
最常用的条件判断语句, 如果不符合if里的条件, 执行else里的内容
i = input('请输入一个数: ')
if i == '8':
print('Yes!')
else:
print('No!')
- if…elif…else
常用的条件判断语句, elif 相当于 else if
i = input('请输入一个数: ')
if i == '5':
print('输入了5')
elif i == '8':
print('输入了8')
else:
print('输入的不是5或8')
- for...else
如果for循环结束, 且没有执行break, 执行else里的内容
for i in range(10):
print(i)
if i == 4:
print('执行break')
break
else:
print('经过else')
for j in range(10):
print(j)
if j == 123:
print('执行break')
break
else:
print('经过else')
- while…else
如果不符合while的条件, 且没有执行break, 执行else里的内容
i = 0
while i <= 99:
print(i)
if i == 999:
print('执行break')
break
else:
print('经过else')
j = 0
while j <= 99:
print(i)
if i == 90:
print('执行break')
break
else:
print('经过else')
- try…except…else
如果try里的语句出错, 执行except里的内容, 否则执行else里的内容
try:
a = 我爱鱼C
except:
print('执行except')
else:
print('执行else')
try:
a = '我爱鱼C'
except:
print('执行except')
else:
print('执行else')
字典对象的常用方法
字典对象的所有除魔法方法外的函数有: ['clear', 'copy', 'fromkeys', 'get', 'items', 'keys', 'pop', 'popitem', 'setdefault', 'update', 'values']
#########################
- clear()
清空字典
>>> test = {1: 'i', 2: 'love', 3: 'fishc'}
>>> test
{1: 'i', 2: 'love', 3: 'fishc'}
>>> test.clear()
>>> test
{}
- copy()
复制字典
>>> raw = {1: 'i', 2: 'love', 3: 'fishc'}
>>> same = raw.copy()
>>> raw
{1: 'i', 2: 'love', 3: 'fishc'}
>>> same
{1: 'i', 2: 'love', 3: 'fishc'}
>>> id(same) == id(raw)
False
- fromkeys(iterable, value)
返回一个字典, 键为iterable里的每一项, 值为value, 等效于 {i: value for i in iterable}
>>> {}.fromkeys(range(1, 33), 'Excellent')
{1: 'Excellent', 2: 'Excellent', 3: 'Excellent', 4: 'Excellent', 5: 'Excellent', 6: 'Excellent', 7: 'Excellent', 8: 'Excellent', 9: 'Excellent', 10: 'Excellent', 11: 'Excellent', 12: 'Excellent', 13: 'Excellent', 14: 'Excellent', 15: 'Excellent', 16: 'Excellent', 17: 'Excellent', 18: 'Excellent', 19: 'Excellent', 20: 'Excellent', 21: 'Excellent', 22: 'Excellent', 23: 'Excellent', 24: 'Excellent', 25: 'Excellent', 26: 'Excellent', 27: 'Excellent', 28: 'Excellent', 29: 'Excellent', 30: 'Excellent', 31: 'Excellent', 32: 'Excellent'}
- get(k[, d])
返回字典中键k对应的值, 如果字典中没有键k, 则返回d
>>> test = {1: 'i', 2: 'love', 3: 'fishc'}
>>> test.get(3, 'key不存在!)
'fishc'
>>> test.get('ddd', 'key不存在!)
'key不存在!'
- keys(), values(), items()
keys()返回字典中所有键的列表
values()返回字典所有值的列表
items()返回字典(键, 值)的列表
>>> test = {'aac': ('777', 6), 66: 'love', 45: 765, 'hh': 'fishc'}
>>> test.keys()
dict_keys(['aac', 66, 45, 'hh'])
>>> test.values()
dict_values([('777', 6), 'love', 765, 'fishc'])
>>> dict.items()
dict_items([('aac', ('777', 6)), (66, 'love'), (45, 765), ('hh', 'fishc')])
- pop(k[, d])
返回字典中k对应的值, 并删除, 不存在就返回d
>>> test = {1: 'i', 2: 'love', 3: 'fishc'}
>>> test
{1: 'i', 2: 'love', 3: 'fishc'}
>>> test.pop(1, '不存在!')
'i'
>>> test
{2: 'love', 3: 'fishc'}
>>> test.pop(1, '不存在!')
'不存在!'
>>> test
{2: 'love', 3: 'fishc'}
- popitem()
返回字典中的第一项(默认顺序), 并从字典中删除
>>> test = {1: 'i', 2: 'love', 3: 'fishc'}
>>> test.popitem()
(1, 'i')
>>> test
{2: 'love', 3: 'fishc'}
- setdefault(k[, d])
如果键在字典中, 返回这个键所对应的值
如果键不在字典中, 向字典中加入这个键, 以d为这个键的值, 并返回d
>>> test = {2: 'love', 3: 'fishc'}
>>> test
{2: 'love', 3: 'fishc'}
>>> test.setdefault(2, '!!!!!')
'love'
>>> test
{2: 'love', 3: 'fishc'}
>>> test.setdefault(1, 'i')
'i'
>>> test
{1, 'i', 2: 'love', 3: 'fishc'}
- update
将新字典添加到原字典
>>> raw = {1: 'i', 4: 'com'}
>>> add = {2: 'love', 3: 'fishc'}
>>> raw
{1: 'i', 4: '.com'}
>>> raw.update(add)
>>> raw
{1: 'i', 2: 'love', 3: 'fishc', 4: '.com'}