“专业人士笔记”系列目录:创帆云:Python成为专业人士笔记--强烈建议收藏!每日持续更新!zhuanlan.zhihu.com
Python中有许多集合类型,像int和str等类型只包含一个值,而集合类型包含多个值
Lists 列表
列表类型可能是Python中最常用的集合类型,除了它的名字,列表更像是其他语言中的数组,尤其是像JavaScript。
在Python中,列表只是有效Python值的有序集合。可以通过在方括号中以逗号分隔的封闭值来创建列表 ,如下:
int_list = [1, 2, 3]
string_list = ['abc', 'defghi']
列表可以是空的
empty_list = []
列表的元素不局限于单一的数据类型,考虑到Python是一种动态语言这是非常有意义的创新
mixed_list = [1, 'abc', True, 2.34, None]
一个列表可以包含另一个列表作为它的元素
nested_list = [['a', 'b', 'c'], [1, 2, 3]]
可以通过索引或位置的数字表示访问列表的元素。Python中的列表是零索引的,这意味着列表中的第一个元素在索引0处,第二个元素在索引1处,依此类推
names = ['Alice', 'Bob', 'Craig', 'Diana', 'Eric']
print(names[0]) # Alice
print(names[2]) # Craig
索引也可以是负的,这意味着从列表的末尾开始计数(-1是最后一个元素的索引)。因此,使用上面例子中的列表:
print(names[-1]) # Eric
print(names[-4]) # Bob
list是可变的,因此你可以更改list中的值 :
names[0] = 'Ann'
print(names)
#输出 ['Ann', 'Bob', 'Craig', 'Diana', 'Eric']
此外,可以从列表中添加和/或删除元素,使用append(object)将对象追加到列表末尾
names = ['Alice', 'Bob', 'Craig', 'Diana', 'Eric']
names.append("Sia")
print(names)
输出 ['Alice', 'Bob', 'Craig', 'Diana', 'Eric', 'Sia']
添加一个新元素在指定的索引上,用insert(index, object)
names.insert(1, "Nikki")
print(names)
输出 ['Alice', 'Nikki', 'Bob', 'Craig', 'Diana', 'Eric', 'Sia']
使用remove(value)删除第一个出现的值
names.remove("Bob")
print(names)
# 输出 ['Alice', 'Nikki', 'Craig', 'Diana', 'Eric', 'Sia']
获取第一个值为‘ Alice ’的项的列表中的索引。如果列表中没有这个值,它将显示一个错误
name.index("Alice")
#返回0
计算list的长度
len(names)
输出 6
统计列表中某个项的出现次数
a = [1, 1, 1, 2, 3, 4]
a.count(1)
#输出3
反转列表
a.reverse()
[4, 3, 2, 1, 1, 1]
或者
a[::-1]
[4, 3, 2, 1, 1, 1]
使用pop([index]) 删除并返回项目在索引(默认为最后一个项目)处的值,并返回这个值
names.pop() # 输出 ‘Sia’,这是list中最后一个值,现在已经被删除
您可以像下面这样迭代列表元素:
for element in my_list:
print (element)
Tuples 元组
元组类似于列表,但它是固定长度和不可变的。因此,既不能更改tuple中的值,也不能在tuple中添加或删除值。元组通常用于不需要更改的值的小集合,如IP地址和端口。元组由圆括号表示,而不是方括号
ip_address = ('10.20.30.40', 8080)
列表的索引规则也适用于元组。元组也可以嵌套,值可以是任何有效的Python允许的值,只有一个成员的元组必须这样定义(注意逗号) :
one_member_tuple = ('Only member',)
或者
one_member_tuple = 'Only member'
或只是使用元组语法 :
one_member_tuple = tuple(['Only member'])
Dictionaries 字典
Python中的字典是键值对的集合,字典被花括号包围着;每一对由逗号分隔,键和值由冒号分隔,这是一个例子:
state_capitals = {
'Arkansas': 'Little Rock',
'Colorado': 'Denver',
'California': 'Sacramento',
'Georgia': 'Atlanta'
}
要获得一个值,通过它的键来引用它 :
ca_capital = state_capitals['California']
您还可以获得字典中的所有键,然后对它们进行迭代
for k in state_capitals.keys():
print('{} is the capital of {}'.format(state_capitals[k], k))
字典非常类似JSON语法,Python标准库中的原生json模块可用于在json和字典之间进行转换。
set 集合
集合是一组元素的集合,没有重复,没有顺序,它们只在某些情况下使用,即某些东西组合在一起是很重要的,而不涉及它们的顺序。对于数据比较多的情况,检查元素是否在集合中比检查list列表要快得多。
定义集合与定义字典非常相似:
first_names = {'Adam', 'Beth', 'Charlie'}
也可以使用现有列表构建一个集合 :
my_list = [1,2,3]
my_set = set(my_list)
使用in检查集合中是否有该成员:
if name in first_names:
print(name)
你可以像列表一样遍历一个集合,但是请记住:这些值将以任意的的顺序出现
defaultdict 默认字典
defaultdict是一个键值为默认值的字典,因此没有显式定义值的键可以在没有错误的情况下访问。defaultdict在字典中的值是集合(列表、dict等)时特别有用,因为它不需要在每次使用新键时都进行初始化。
defaultdict永远不会引发key错误。任何不存在的键都会返回默认值。
例如,考虑下面的字典 :
state_capitals = {
'Arkansas': 'Little Rock',
'Colorado': 'Denver',
'California': 'Sacramento',
'Georgia': 'Atlanta'
}
如果我们试图访问一个不存在的key,python会返回一个错误,如下所示
state_capitals['Alabama']
Traceback (most recent call last):
File "", line 1, in
state_capitals['Alabama']
KeyError: 'Alabama'
让我们尝试使用defaultdict,它可以在集合模块中找到
from collections import defaultdict
state_capitals = defaultdict(lambda: 'Boston')
我们在这里所做的是设置一个默认值(Boston),以防所给的键不存在。现在像以前一样填充dict :
state_capitals['Arkansas'] = 'Little Rock'
state_capitals['California'] = 'Sacramento'
state_capitals['Colorado'] = 'Denver'
state_capitals['Georgia'] = 'Atlanta'
如果我们试图使用不存在的键访问dict, python将返回默认值,即Boston
state_capitals['Alabama']
输出'Boston'
同时也能像普通字典一样返回之前创建过的值
state_capitals['Arkansas']
输出'Little Rock'
好了,今天的分享就到这里,请勿转载,违者必究!