Python随笔
- Python还允许用
r''
表示字符串内部
的字符串默认不转义。 - 如果字符串内部有很多换行,用
\n
写在一行里不好阅读,为了简化,Python允许用'''...'''
的格式表示多行内容。(这种写法也支持r标记不转义)
print('''
content1
content2
content3
''')
/
除法计算结果是浮点数,即使是两个整数恰好整除。另一种除法是//
,称为地板除,两个整数的除法仍然是整数。
>>> 9 / 3 3.0
>>> 10 // 3 3
-
对于单个字符的编码,Python提供了
ord()
函数获取字符的整数表示,chr()
函数把编码转换为对应的字符。
>>> ord('A') 65 >>> ord('中') 20013 >>> chr(66) 'B' >>> chr(25991) '文'
encode 和 decode
>>> "abc".encode("ascii") b'abc' >>> "中文".encode("utf-8") b'\xe4\xb8\xad\xe6\x96\x87'
>>> b'\xe4\xb8\xad\xe6\x96\x87'.decode("utf-8") '中文'
如果bytes
中只有一小部分无效的字节,可以传入errors='ignore'
忽略错误的字节:
>>> b'\xe4\xb8\xad\xff'.decode('utf-8', errors='ignore')
'中'
- 要计算
str
包含多少个字符,可以用len()
函数,len()
函数计算的是str
的字符数,如果换成bytes
,len()
函数就计算字节数。
>>> len('ABC') 3 >>> len('中文') 2 >>> len(b'ABC') 3 >>> len(b'\xe4\xb8\xad\xe6\x96\x87') 6 >>> len('中文'.encode('utf-8')) 6
- if语句
if x: print('True')
只要x
是非零数值、非空字符串、非空list等,就判断为True
,否则为False
。
- 循环
sum = 0 for val in range(1, 10): sum+=val print("Sum:", sum)
names = ['Michael', 'Bob', 'Tracy']
for name in names:
print(name)
sum = 0 idx = 0 for val in range(1, 101): if val == 10: continue sum+=val idx+=1 if sum > 1000: break print("Sum:", sum)
- 字典dict
dict = {"Name1":12, "Name2":13, "Name3":"mm"} print(dict["Name3"]) if ("Name1" in dict): print(dict["Name1"]) if ("Name4" in dict): print(dict["Name4"]) print(dict.get("Name")) #没对应key则返回None print(dict.get("Name", "没对应key时使用的默认值")) dict.pop("Name3")
- set
set和dict类似,也是一组key的集合,但不存储value。由于key不能重复,所以,在set中,没有重复的key。 要创建一个set,需要提供一个list作为输入集合: >>> s = set([1, 2, 3]) >>> s {1, 2, 3} 注意,传入的参数[1, 2, 3]是一个list,而显示的{1, 2, 3}只是告诉你这个set内部有1,2,3这3个元素,显示的顺序也不表示set是有序的。。 重复元素在set中自动被过滤: >>> s = set([1, 1, 2, 2, 3, 3]) >>> s {1, 2, 3} 通过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}