python是一种动态语言这意味着_Python成为专业人士笔记–集合类型(Lists,Tuples,Dictionaries,set)...

“专业人士笔记”系列目录:创帆云:Python成为专业人士笔记--强烈建议收藏!每日持续更新!​zhuanlan.zhihu.comv2-6f8775e246d893360cf7d8f701b3befa_180x120.jpg

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'

好了,今天的分享就到这里,请勿转载,违者必究!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值