- 列表元素去重
列表元素去重打多使用集合set
,而后再使用list
进行强制类型转换即可。但是这样会使得去重后的列表元素重新排列,如果我们想让去重后的列表元素依然按原来的顺序排列的话,如下:
AList = [2, 1, 3, 1, 2]
BList = list(set(AList))
print(BList)
BList.sort(key=AList.index)
print(BList)
-
格式化字符串
%
、.format
、fstring
三种,其中fstring是在python3.6中最新出现的。 -
.format
:使用较为灵活:
'{1} {0}'.format('abc', 123) # 可以不按顺序进行位置映射,输出'123 abc'
'{} {}'.format('abc', 123) # 可以不指定参数名称,输出'abc 123'
'{1} {0} {1}'.format('abc', 123) # 参数可以使用多次,输出'123 abc 123'
'{name} {age}'.format(name='tom', age=27) # 可以按关键字映射,输出'tom 27'
'{person.name} {person.age}'.format(person=person) # 可以按对象属性映射,输出'tom 27'
'{0[1]} {0[0]}'.format(lst) # 通过下标映射
-
fstring
:形式上以f
或F
引领的字符串,并在该字符串中使用{}
来标明被替换的字段。在功能上与之前的%
和.format
几乎相同,同时性能较强,故推荐使用fstring
。⚠️:While other string literals always have a constant value, formatted strings are really expressions evaluated at run time.
(与具有恒定值的其它字符串常量不同,格式化字符串实际上是运行时运算求值的表达式。)
—— Python Documentation
>>> name = 'Pluto'
>>> f'Hello, my name is {name}'
'Hello, my name is Pluto'
>>> f'My name is {name.lower()}'
'My name is pluto'
- 解包
亦称为unpacking,是将可迭代对象中的元素逐个取出,比如从列表中的切片、取值等操作,而*
则可以对应对应一个可变长的解包后的元素。
>>> a, *b, c = [1,2,3,4]
>>> a
1
>>> b
[2, 3]
>>> c
4
**
则专用于字典对象,可以将字典对象解包成关键字参数key=value
的格式:
a = {"A":1,"B":2}
b = {"C":3,"D":4}
print({**a,**b})
json
&dict
json
和`dict在格式上看很相似,但实际上二者存在很大不同,一言以蔽之:
Python 的字典是一种数据结构,JSON 是一种数据格式。
主要区别有如下几点(不完全):
1、json的key只能是字符串,字典可以是任何的hashable;
2、json的key是可以重复的,dict不可以;
3、json的字符串强制使用双引号,dict字符串单、双引号均可;
4、json中的中文是unicode
编码;
5、json定义布尔值和空值:true、false、null。python定义布尔值和空值:True、False、None。
6、json的类型是str。
import json
dic = {'a': 123, 'b': "456", 'c': "liming"}
json_str = json.dumps(dic)
dic2 = json.loads(json_str)
print(dic)
print(json_str)
>>>
{'c': 'liming', 'b': '456', 'a': 123}
{"c": "liming", "b": "456", "a": 123}