Python成为专业人士笔记–集合类型(Lists,Tuples,Dictionaries,set)

“专业人士笔记”系列目录:

创帆云:Python成为专业人士笔记--强烈建议收藏!每日持续更新!


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、付费专栏及课程。

余额充值