python的列表、元组、字典、集合

一、列表

1.定义

列表是最常用的Python数据类型,它可以作为一个方括号内的逗号分隔值出现。

列表的数据项不需要具有相同的类型。列表中的数据类型可以是整形,浮点型,字符串,对象,甚至是列表等都可以。

2.创建一个列表
>>> list1=[]
>>> list1
[]
>>> list2=[1,2,3,4]
>>> list2
[1, 2, 3, 4]
>>> list3=['a','b','c','d']
>>> list3
['a', 'b', 'c', 'd']
>>> list4=['a',1,2.2]
>>> list4
['a', 1, 2.2]
3.向列表添加元素

要向列表中添加元素,可以使用列表的一些内置方法:append()、extend()、insert()

# append()在列表末尾添加一个元素
>>> list1=[]
>>> list2=[1,2,3,4]
>>> list3=['a','b','c','d']
>>> list4=['a',1,2.2]
>>> list1.append(1)
>>> list1
[1]
>>> list2.append('a')
>>> list2
[1, 2, 3, 4, 'a']
>>> list3.append(list2)
>>> list3
['a', 'b', 'c', 'd', [1, 2, 3, 4, 'a']]

# extend() 函数用于在列表末尾一次性追加另一个序列中的多个值(可以用元组,列表,集合)
>>> list3.extend(list2)                  # 对比一下于用append()方法有何不同 
>>> list3
['a', 'b', 'c', 'd', [1, 2, 3, 4, 'a'], 1, 2, 3, 4, 'a']
>>> list1.extend((1,2,3,4))
>>> list1
[1, 1, 2, 3, 4]
>>> list1.extend({5,6,7,8})
>>> list1
[1, 1, 2, 3, 4, 8, 5, 6, 7]

#insert() 函数用于将指定对象插入列表的指定位置。list.insert(index, obj)
>>> list2
[1, 2, 3, 4, 'a']
>>> list2.insert(1,2)
>>> list2
[1, 2, 2, 3, 4, 'a']
4.从列表中获取元素

跟c语言里面的一样,可以通过元素的索引值从列表中获取单个元素。(从0开始)

#变量[索引值]
>>> list1=[1, 1, 2, 3, 4, 8, 5, 6, 7]
>>> list1[1]
1
5.从列表中删除元素

从列表中删除元素有三种操作:remove() 、pop()、del

#remove() 函数用于移除列表中某个值的第一个匹配项。 list.remove(obj)
>>> list1=[1, 1, 2, 3, 4, 8, 5, 6, 7]
>>> list1
[1, 1, 2, 3, 4, 8, 5, 6, 7]
>>> list1.remove(2)
>>> list1
[1, 1, 3, 4, 8, 5, 6, 7]

#pop() 函数用于移除列表中的一个元素(默认最后一个元素),并且返回该元素的值。list.pop([index=-1]) 
#index -- 可选参数,要移除列表元素的索引值,不能超过列表总长度,默认为 index=-1,删除最后一个列表值。
>>> list1=[1, 1, 2, 3, 4, 8, 5, 6, 7]
>>> list1.pop()
7
>>> list1
[1, 1, 2, 3, 4, 8, 5, 6]
>>> list1.pop(2)
2
>>> list1
[1, 1, 3, 4, 8, 5, 6]
>>> list1.pop(-1)
6

#del 可以直接删除列表中给的某个元素
>>> list1=[1, 1, 2, 3, 4, 8, 5, 6, 7]
>>> list1
[1, 1, 2, 3, 4, 8, 5, 6, 7]
>>> del list1[2]                   # 删除list1中的第2个元素
>>> list1
[1, 1, 3, 4, 8, 5, 6, 7]  
6.列表的切片

利用索引值,每次我们可以从列表获取一个元素,但是我们总是贪心的,如果一次性需要获取多个元素,有没有办法实现呢?利用列表分片,我们可以简单的实现这个要求。

#变量名[起始索引值:结束索引值:步长] 列表的切片操作一般需要三个参数,不过在一些情况下是可以省略的。 特别需要注意的是列表切片区间是左闭右开的
>>> list1=[1, 1, 2, 3, 4, 8, 5, 6, 7]
>>> list2=list1[0:4]       # 获取list1的第0个元素到第3个元素
>>> list2
[1, 1, 2, 3]
7.列表常用的操作符
  • 比较操作符(列表中的元素一定要是相同类型才可以进行比较)

    >>> list1=[123]
    >>> list2=[234]
    >>> list1>list2
    False
    
    >>> list1=[123,12]
    >>> list2=[9,234]
    >>> list1>list2
    True
    
  • 连接操作符

    >>> list1=[123,12]
    >>> list2=[9,234]
    >>> list3=list1+list2
    >>> list3
    [123, 12, 9, 234]
    
  • 重复操作符

    >>> list1=[123]
    >>> list2=list1*4
    >>> list2
    [123, 123, 123, 123]
    
  • 成员关系操作符

    >>> list1=[1,2,3,4,5]
    >>> 1 in list1
    True
    >>> 2 not in list1
    False
    >>> 6 in list1
    False
    

二、元组

1.定义

Python 的元组与列表类似,不同之处在于元组的元素不能修改。简单来说元组就是一个被上了枷锁的列表。

元组使用小括号,列表使用方括号。

元组创建很简单,只需要在括号中添加元素,并使用逗号隔开即可。

2.创建元组
>>> tup1 = ('hello', 'world', 10,20,2019)
>>> tup1
('hello', 'world', 10, 20, 2019)
>>> tup2 = (1, 2, 3, 4, 5 )
>>> tup2
(1, 2, 3, 4, 5)
>>> tup3 = "a", "b", "c", "d"  # 不需要括号也可以
>>> tup3
('a', 'b', 'c', 'd')
>>> tup4=()                    # 创建一个空元组      
()                   

元组中只包含一个元素时,需要在元素后面添加逗号,否则括号会被当作运算符使用:

#对比以下两个输出结果
>>> tup1=(50)
>>> type(tup1)
<class 'int'>
>>> tup2=(50,)
>>> type(tup2)
<class 'tuple'>
3.从元组中获取元素

和列表一样,从元组中获取元素可以采用索引值或者切片的操作

>>> tup1 = ('hello', 'world', 10,20,2019)
>>> tup2 = (1, 2, 3, 4, 5, 6, 7 )
>>> print(tup1[0])
hello
>>> print(tup2[0:5])
(1, 2, 3, 4, 5)
4.元组的删除

元组中的元素值是不允许删除的,但我们可以使用del语句来删除整个元组。

>>> tup1=(1,2,3,4)
>>> tup1
(1, 2, 3, 4)
>>> del tup1
>>> tup1
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
NameError: name 'tup1' is not defined
5.元组的常用的操作符
  • 比较操作符(元组中的元素一定要是相同类型才可以进行比较)

    >>> tup1 = (1, 2, 3, 4)
    >>> tup2 = (4, 5, 6, 7)
    >>> tup1>tup2
    False
    
  • 连接操作符

    >>> tup1 = (1, 2, 3, 4)
    >>> tup2 = (4, 5, 6, 7)
    >>> tup1
    (1, 2, 3, 4)
    >>> tup2
    (4, 5, 6, 7)
    >>> tup3=tup1+tup2
    >>> tup3
    (1, 2, 3, 4, 4, 5, 6, 7)
    
  • 重复操作符

    >>> tup1 = (1, 2, 3, 4)
    >>> tup2=tup1*4
    >>> tup2
    (1, 2, 3, 4, 1, 2, 3, 4, 1, 2, 3, 4, 1, 2, 3, 4)
    
  • 成员关系操作符

    #观察一下三个输出
    >>> tup1 = (1, 2, 3, 4)
    >>> 1 in tup1
    True
    >>> 1 not in tup1
    False
    >>> 'a' in tup1
    False
    

三、字典

1.定义

字典是另一种可变容器模型,且可存储任意类型对象。

字典的每个键值(key=>value)对用冒号(:)分割,每个对之间用逗号(,)分割,整个字典包括在花括号(**{})**中 ,格式如下所示:

d = {key1 : value1, key2 : value2 }

字典的键必须是唯一的,但值不一定。值可以是python里面任意一种数据类型,但键必须是不可变的,如:字符串、数组或者元组。以下是字典的几种定义方式。

>>> dict0 = {'Alice': '2341', 'Beth': '9102', 'Cecil': '3258'}
>>> dict0
{'Alice': '2341', 'Beth': '9102', 'Cecil': '3258'}
>>> dict1 = { 'abc': 456 }
>>> dict1
{'abc': 456}
>>> dict2 = { 'abc': 123, 98.6: 37 }
>>> dict2
{'abc': 123, 98.6: 37}
2.访问字典中的值

把相应的键放入到方括号中,如下实例:

>>> dict1 = {'Name': 'Tom', 'Age': 15, 'Class': 'First'}
>>> print ("dict1['Name']: ", dict1['Name'])
dict1['Name']:  Tom
>>> print ("dict1['Age']: ", dict1['Age'])
dict1['Age']:  15

如果访问字典中不存在的值,则会报错

>>> dict1 = {'Name': 'Tom', 'Age': 15, 'Class': 'First'}
>>> print ("dict['score']: ", dict1['score'])
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
KeyError: 'score'
3.修改字典中的值

向字典添加新内容的方法是增加新的键/值对,修改或删除已有键/值对如下所示:

>>> dict1 = {'Name': 'Tom', 'Age': 15, 'Class': 'First'}
>>> dict1
{'Name': 'Tom', 'Age': 15, 'Class': 'First'}
>>> dict1['Name']='Mike'        # 修改Name的值
>>> dict1
{'Name': 'Mike', 'Age': 15, 'Class': 'First'}
>>> dict1['Score']=100          # 插入Score键值
>>> dict1
{'Name': 'Mike', 'Age': 15, 'Class': 'First', 'Score': 100}
4.字典的删除

可以删除字典中某个元素或者单个元素,或者把整个字典删除掉,具体实例如下:

>>> dict1 = {'Name': 'Tom', 'Age': 15, 'Class': 'First'}
>>> del dict1['Name']         # 删除键 'Name'
>>> dict1
{'Age': 15, 'Class': 'First'}
>>> dict1.clear()             # 清空字典
>>> dict1
{}
>>> del dict1                 # 删除字典         
>>> dict1
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
NameError: name 'dict1' is not defined
5.字典键的特性

字典值可以是任何的 python 对象,既可以是标准的对象,也可以是用户定义的,但键不行。

两个重要的点需要记住:

1)不允许同一个键出现两次。创建时如果同一个键被赋值两次,后一个值会被记住,如下实例:

>>> dict1 = {'Name': 'Tom', 'Age': 7, 'Name': 'Mike'}
>>> print ("dict['Name']: ", dict1['Name'])
dict['Name']:  Mike
#最后输出是dict1['Name']:  Mike,而不是dict1['Name']:  Tom
6.字典常用的操作运算符
  • 成员关系操作符

    key in dict 如果键在字典dict里返回true,否则返回false。而key not in dict返回结果则相反

    >>> dict1 = {'Name': 'Tom', 'Age': 7, 'Name': 'Mike'}
    >>> 'Name' in dict1
    True
    >>> 'Score' not in dict1
    True
    

四、集合

1.定义以及创建

集合(set)是一个无序的不重复元素序列。可以使用大括号 { } 或者 set() 函数创建集合,注意:创建一个空集合必须用 set() 而不是 { },因为 { } 是用来创建一个空字典。

创建格式:

parame = {value01,value02,...}
或者
set(value) #value可以是列表或者元组
>>> basket = {'apple', 'orange', 'apple', 'pear', 'orange', 'banana'}
>>> print(basket)                      # 这里演示的是去重功能
{'orange', 'banana', 'pear', 'apple'}
2.修改集合中的值
  1. 向集合中添加元素

    可以采用add()或者update()方法

    #add()方法是将元素 x 添加到集合 s 中,如果元素已存在,则不进行任何操作。
    >>> s=set([1,2,3,4])
    >>> s.add(1)
    >>> s
    {1, 2, 3, 4}
    >>> s.add(5)
    >>> s
    {1, 2, 3, 4, 5}
    
    #用update()也可以添加元素,且参数可以是列表,元组,字典等。
    >>> set((1,2,5))
    {1, 2, 5}
    >>> s=set([1,2,3,4])
    >>> s
    {1, 2, 3, 4}
    >>> s.update([5,6,7,8])
    >>> s
    {1, 2, 3, 4, 5, 6, 7, 8}
    >>> s.update((9,10,11,12))
    >>> s
    {1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12}
    
  2. 移除元素

    移除元素用remove()、discard()、pop()、clear()、del

    #remove()将元素 x 从集合 s 中移除,如果元素不存在,则会发生错误。
    >>> s=set([1,2,3,4])
    >>> s
    {1, 2, 3, 4}
    >>> s.remove(1)
    >>> s
    {2, 3, 4}
    >>> s.remove(1)
    Traceback (most recent call last):
      File "<stdin>", line 1, in <module>
    KeyError: 1
        
    #discard()也是移除集合中的元素,且如果元素不存在,不会发生错误。
    >>> s=set([1,2,3,4])
    >>> s
    {1, 2, 3, 4}
    >>> s.remove(1)
    >>> s
    {2, 3, 4}
    >>> s.discard(1)
    >>> s
    {2, 3, 4}
    
    #pop() 在脚本模式下随机删除一个元素,但在交互模式下是删除集合中的第一个元素(排序后的第一个元素)
    #脚本模式
    s=set([1,2,3,4])
    x=s.pop()
    print(x)
    #输出结果
    python test.py
    1
    #每次结果都不相同
    
    #交互模式下
    >>> s=set([5,8,9,3,4])
    >>> s
    {3, 4, 5, 8, 9}
    >>> s.pop()
    3
    
    #clear() 清空集合中的元素
    >>> s=set([1,5,6,3,2,8,9,3,1,10,12])
    >>> s
    {1, 2, 3, 5, 6, 8, 9, 10, 12}
    >>> s.clear()
    >>> s
    set()
    
    #del 删除整个集合
    >>> s=set([1,5,6,3,2,8,9,3,1,10,12])
    >>> s
    {1, 2, 3, 5, 6, 8, 9, 10, 12}
    >>> del s
    >>> s
    Traceback (most recent call last):
      File "<stdin>", line 1, in <module>
    NameError: name 's' is not defined
    
3.访问集合中的元素

可以用for in语句输出集合中的元素

>>> s=set([1,5,6,3,2,8,9,3,1,10,12])
>>> for i in s:
...     print(i,end=',')
...
1,2,3,5,6,8,9,10,12,
4.集合间的运算
>>> a = set('abracadabra')
>>> b = set('alacazam')
>>> a                                  
{'a', 'r', 'b', 'c', 'd'}
>>> a - b                              # 集合a中包含而集合b中不包含的元素
{'r', 'd', 'b'}
>>> a | b                              # 集合a或b中包含的所有元素
{'a', 'c', 'r', 'd', 'b', 'm', 'z', 'l'}
>>> a & b                              # 集合a和b中都包含了的元素
{'a', 'c'}
>>> a ^ b                              # 不同时包含于a和b的元素
{'r', 'd', 'b', 'm', 'z', 'l'}
>>> 1 in a                             # 判断元素是否在集合中存在
False
>>> 'a' in a                           # 判断元素是否在集合中存在
True
>>> 'b' not in a                       # 判断元素是否在集合中存在  
False
发布了50 篇原创文章 · 获赞 52 · 访问量 4万+

猜你喜欢

转载自blog.csdn.net/qq_43058685/article/details/102629489