毛泽东: “仗我们是不怕打的,帝国主义要想‘和平演变’我们这一代人也难;可下一代、再下一代就不好讲了。中国人讲‘君子之泽,五世而斩’,英国人说‘爵位不传三代’;到我们的第三代、第四代人身上,情形又会是个什么样子啊?我不想哪一天,在中国的大地上再出现人剥削人的现象,再出现资本家、企业主、雇工、妓女和吸食鸦片烟;如果那样,许多烈士的血就白流了……”
https://docs.python.org/zh-cn/3.6/tutorial/index.html
https://docs.pythontab.com/python/python3.5/datastructures.html
本文会持续更新
在交互模式下,上一次打印出来的表达式被赋值给变量 _。这意味着当你把Python用作桌面计算器时,继续计算会相对简单,比如:
反斜杠 \ 来转义;
单双引号;
单双引号,里层引号 \ 没有转义;
print() 函数会生成可读性更强的输出,即略去两边的引号,并且打印出经过转义的特殊字符;
引号前添加 r 不转义。
Python 中的字符串不能被修改,它们是 immutable 的。因此,向字符串的某个索引位置赋值会产生一个错误
列表与 immutable 的字符串不同, 列表是一个 mutable 类型,就是说,它自己的内容可以改变。可以在列表结尾,通过 append() 方法 添加新元素
list.append(x)
把一个元素添加到列表的结尾,相当于 a[len(a):] = [x]。
list.extend(L)
将一个给定列表中的所有元素都添加到另一个列表中,相当于 a[len(a):] = L。
list.insert(i, x)
在指定位置插入一个元素。第一个参数是准备插入到其前面的那个元素的索引,例如 a.insert(0, x) 会插入到整个列表之前,而 a.insert(len(a), x) 相当于 a.append(x)。
list.remove(x)
删除列表中值为 x 的第一个元素。如果没有这样的元素,就会返回一个错误。
list.pop([i])
从列表的指定位置删除元素,并将其返回。如果没有指定索引,a.pop() 返回最后一个元素。元素随即从列表中被删除(方法中 i 两边的方括号表示这个参数是可选的,而不是要求你输入一对方括号,你会经常在Python 库参考手册中遇到这样的标记)。
list.clear()
从列表中删除所有元素。相当于 del a[:]。
list.index(x)
返回列表中第一个值为 x 的元素的索引。如果没有匹配的元素就会返回一个错误。
list.count(x)
返回 x 在列表中出现的次数。
list.sort()
对列表中的元素就地进行排序。
list.reverse()
就地倒排列表中的元素。
list.copy()
返回列表的一个浅拷贝。等同于 a[:]。
列表作为堆栈使用:
堆栈作为特定的数据结构,最先进入的元素最后一个被释放(后进先出)。用 append() 方法可以把一个元素添加到堆栈顶。用不指定索引的 pop() 方法可以把一个元素从堆栈顶释放出来。
列表作为队列使用:
队列作为特定的数据结构,最先进入的元素最先释放(先进先出)。不过,列表这样用效率不高。相对来说从列表末尾添加和弹出很快;在头部插入和弹出很慢。使用 collections.deque,它为在首尾两端快速插入和删除而设计。
集合:
集合是一个无序不重复元素的集。基本功能包括关系测试和消除重复元素。集合对象还支持 union(联合),intersection(交),difference(差)和 sysmmetric difference(对称差集)等数学运算。
大括号或 set() 函数可以用来创建集合。注意:想要创建空集合,你必须使用 set() 而不是 {}。
字典:
字典以 关键字 为索引,关键字可以是任意不可变类型,通常用字符串或数值。如果元组中只包含字符串和数字,它可以做为关键字,如果它直接或间接的包含了可变对象,就不能当做关键字。
键必须是互不相同的(在同一个字典之内)。一对大括号创建一个空的字典: {} 。
对一个字典执行 list(d.keys()) 将返回一个字典中所有关键字组成的无序列表(如果你想要排序,只需使用 sorted(d.keys()) )。
{x: x**2 for x in range(2,4,6)} #{2: 4, 4: 16, 6: 36}
dict(z = I , f = lv, y = you) #{'z': 'I', 'f': 'lv', 'y': 'you'}
循环技巧:
(1)在字典中循环时,关键字和对应的值可以使用 items() 方法同时解读出来:
knights = {'gallahad': 'the pure', 'robin': 'the brave'}
for k, v in knights.items():
print(k, v)#gallahad the pure
#robin the brave
(2)在序列中循环时,索引位置和对应值可以使用 enumerate() 函数同时得到:
for i, v in enumerate(['tic', 'tac', 'toe']):
print(i, v)
'''
0 tic
1 tac
2 toe
'''
(3)同时循环两个或更多的序列,可以使用 zip() 整体打包:
questions = ['name', 'quest', 'favorite color']
answers = ['lancelot', 'the holy grail', 'blue']
for q, a in zip(questions, answers):
print('What is your {0}? It is {1}.'.format(q, a))
'''
What is your name? It is lancelot.
What is your quest? It is the holy grail.
What is your favorite color? It is blue.
'''
(4)逆向循环序列,先正向定位序列,然后调用 reversed() 函数:
for i in reversed(range(1,10,2)):
print(i) #9 7 5 3 1
(5)若要在循环内部修改正在遍历的序列(例如复制某些元素),建议您首先制作副本。在序列上循环不会隐式地创建副本。切片表示法使这尤其方便:
words = ['cat', 'window', 'defenestrate']
for w in words[:]: # Loop over a slice copy of the entire list.
if len(w) > 6:
words.insert(0, w)
# words ['defenestrate', 'cat', 'window', 'defenestrate']