三元运算符
格式: a = 值1 if
条件 else
值2
列表生成式(由列表生成列表)
List Comprehensions
格式: a = [
{'name': u[0], 'age': u[1]} for
u in
user_list if
u['sex'] == 'male']
删除列表中的元素
- 按值删除(只能删除第一个)
.remove(x)
listA = [1, 1, 2, 3, 5, 8, 13]
listA.remove(3) # 删除第一个值=3的元素
print(listA) # [1, 1, 2, 5, 8, 13]
- 按索引删除
.pop(i)
# 推荐的pop()方法
listA = [1, 1, 2, 3, 5, 8, 13]
listA.pop(2) # 删除index=2的元素
print(listA) # [1, 1, 3, 5, 8, 13]
# 不推荐的del:: del删除的是对变量地址的引用,没有删除值
listA = [1, 1, 2, 3, 5, 8, 13]
del listA[2] # 删除index=2的元素
print(listA) # [1, 1, 3, 5, 8, 13]
换行
- 一行代码的尾处打一个
\
就可以在下一行连续书写了 - 如果是表达式,还可以用
()
括起来,中间+
处可以换行,()
中的内容可以换行
字符串的编码
函数:.encode(编码规则)
, .decode(编码规则)
- ASCII字符编码后没变化,其他字符有变化
- 编码后,对应的内存地址不变
- 如果编码规则为空,则自动用
utf8
编码 -
utf8、utf-8、utf_8、UTF8、UTF-8、UTF_8
这些写法都一样 - 如果编码、解码的规则不一样,则解码出来就是乱码
例:
a = '我的祖国'
'''
id = 1fa0ad27440del(10)
value = 我的祖国
type = <class 'str'>
'''
b = a.encode('gb2312')
'''
id = 1fa0ad84bd0del(10) #!内存地址不变
value = b'\xce\xd2\xb5\xc4\xd7\xe6\xb9\xfa' #!非ascii字符,编码后就成这样了
type = <class 'bytes'> #!类型变了
'''
b = a.encode('gbk')
'''
id = 1fa0ad84180del(10)
value = b'\xce\xd2\xb5\xc4\xd7\xe6\xb9\xfa'
type = <class 'bytes'>
'''
b = a.encode() #!如果规则为空,则默认使用utf8编码规则
'''
id = 1fa0ad848a0del(10)
value = b'\xe6\x88\x91\xe7\x9a\x84\xe7\xa5\x96\xe5\x9b\xbd'
type = <class 'bytes'>
'''
b = a.encode('utf8') #!utf8、utf-8、utf_8、UTF8、UTF-8、UTF_8这些写法都一样
'''
id = 1fa0ad848a0del(10)
value = b'\xe6\x88\x91\xe7\x9a\x84\xe7\xa5\x96\xe5\x9b\xbd'
type = <class 'bytes'>
'''
b = a.encode('utf8').decode('gbk') #!编码方式不同,显示出来就是乱码
'''
id = 1fa095a1b90del(10)
value = 鎴戠殑绁栧浗 #!显示出来就是乱码
type = <class 'str'>