会持续更新
在更新变量前必须进行初始化
下面是统计一串字符串中各个字符出现次数的代码
1  | n='aabbbcdeeee'  | 
重点在dic[i]=0和dic[i]+=1
错误的写法:
1  | for i in n:  | 
dic[i]=0为初始化过程,没了这一步就会报错
如何判断数据类型
现在有s="abc"
判断:
1  | #1  | 
is的作用是用来检查两者引用的对象是否相同(或者说是指向的内存地址是否相同)
(列表的)切片除了返回一个副本,还可以表示一个范围来进行赋值
1  | l = ['a', 'b', 'c', 'd', 'e']  | 
字符串的比较
按照字典序,依次对应比较字符的ASCII码值,一旦比出来就不比了
1  | print('abcdefg' < 'b') # --> True  | 
一些列表和字符串方法的注意点
1  | 'a b'.strip() # 正确  | 
删除列表元素的各种方法
listobj.pop(index)return 被删除的值
举例:得1
2
3
4l = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
result = l.pop(5)
print(l)
print(result)1
2[1, 2, 3, 4, 5, 7, 8, 9, 10]
6listobj.remove(value)return None
举例:得1
2
3
4l = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
result = l.remove(5)
print(l)
print(result)1
2[1, 2, 3, 4, 6, 7, 8, 9, 10]
None- 直接
deldel listobj[index]或del listobj[start_index:end_index]
不会产生任何输出 
for i in dictobj问题
只会变遍历字典中的键!!
若要遍历值for i in dictobj.values()
应用:
1  | def reverse_loopup(dictobj, target_value, multi=True):  | 
multi的作用是是否寻找出所有该值对应的键(因为一个值是可以被多个键所关联的)
局部变量问题
局部变量:一个缩进体中的变量即为这个块的局部变量
1  | for i in range(10):  | 
这是错误的,i只在for loop体里有效
1  | been_called=False  | 
得
1  | bc in func: True  | 
也就是说这两个同名的变量并不是同一个东西
如果一定要修改全局been_called的值,可以用global声明变量
1  | been_called = False  | 
得
1  | bc in func: True  | 
元组、列表的分散和收集
1  | def f(*args):  | 
得
1  | (1, 2, 3, 4, 5)  | 
*在这里的作用是收集,把所有的参数合并为一个元组
其中按位实参用**收集,返回dict(按位实参就是上文reverse_loopup()中的multi=True)
举例:
1  | def f(*args, **kargs):  | 
得
1  | (1, 2, 3, 4, 5) {'sixth': 6}  | 
注:sixth不能打上引号,=后的数据类型不限制
对于列表的分散:
1  | l = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]  | 
得
1  | [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]  | 
元组的定义和交换
元组不一定要用()括起来,t=1,2也是个元组表达式,对于只有一个元素的元组需要以,结尾,t=1,
1  | a=1  | 
这里就用到了元祖的交换,不需要第三者变量就能实现swap
三元条件
1  | import math  | 
可简化为:
1  | import math  | 
语句 if 条件表达式 else 语句
如果if后的条件成立则执行最开始的语句,否则执行最后的语句
利用zip()同时遍历两个列表
zip()绑定两个序列中的元素为元组(一一对应,取两者中短的)
1  | l1 = ['a', 'b', 'c', 'd', 'e']  | 
得:
1  | ('a', 1)  | 
不等长的时候:
1  | l1 = ['a', 'b', 'c', 'd', 'e']  | 
结果和上一个相同
#any()和all()
都接受由布尔值组成的序列,例如list和generation expression
1  | any([False,True,False]) # --> True  | 
listobj.append()与listobj.extend()
- listobj.append()接受单个元素
 - listobj.extend()接受列表
 
两者功能相似
1  | l = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]  | 
得[1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 114514]
1  | l = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]  | 
得[1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 1, 1, 4, 5, 1, 4]