17.Python 列表、元组、字典、集合

作者 : icbug 发布时间: 2020-06-7 文章热度:157 共8738个字,阅读需22分钟。 本文内容有更新 手机浏览

目 录

17.Python 列表、元组、字典、集合

Python列表

Python 列表的定义

>>> name = []
>>> type(name)
<class 'list'>
#注意:列表里面的数据类型是可变得,甚至可以嵌套一个列表
>>> name = ['12',10]
>>> name
['12', 10]
>>> type(name)
<class 'list'>

Python 列表操作

参考一段代码,并学会如何创建列表

>>> list1 = ['诹手', 'ez', 'uzi']
# 追加,在列表尾部加入指定的元素
>>> list1.append('雪人')
>>> list1
['诹手', 'ez', 'uzi', '雪人']
>>> list1.append('雪人')
>>> list1
['诹手', 'ez', 'uzi', '雪人', '雪人']
# 将指定的元素插入对应的索引位上,注意负索引
>>> list1.insert(0,'寒冰')
# 将指定序列的元素依次追加列表的尾部
>>> list1
['寒冰', '诹手', 'ez', 'uzi', '雪人', '雪人']
>>> list2 = [1,2,3]
>>> list1.extend(list2)
>>> list1
['寒冰', '诹手', 'ez', 'uzi', '雪人', '雪人', 1, 2, 3]
>>> list1 + list2
['寒冰', '诹手', 'ez', 'uzi', '雪人', '雪人', 1, 2, 3, 1, 2, 3]
2. 列表的删除
# 弹出,返回移除指定索引位上的数据,默认移除索引为-1 的数据,可指定对应的下标
>>> list1
['寒冰', '诹手', 'ez', 'uzi', '雪人', '雪人', 1, 2, 3]
>>> list1.pop()
3
>>> list1.pop()
2
>>> list1
['寒冰', '诹手', 'ez', 'uzi', '雪人', '雪人', 1]
>>> list1.pop(1)
'诹手'
>>> list1
['寒冰', 'ez', 'uzi', '雪人', '雪人', 1]
# 从左往右删除一个指定的元素
>>> list1.remove('ez')
>>> list1
['寒冰', 'uzi', '雪人', '雪人', 1]
# 移除整个列表或者列表的数据,del是Python的内置函数,不是列表独有的
>>> del list1[0]
>>> list1
['uzi', '雪人', '雪人', 1]
>>>
>>> list1
['uzi', '雪人', '雪人', 1]
3. 列表的修改与查找
>>> list1
['uzi', '雪人', '雪人', 1, 1, 2, 3]
>>> list1[-1] = '诹手'
>>> list1
['uzi', '雪人', '雪人', 1, 1, 2, '诹手']
# 计数,返回要计数的元素在列表中的个数
>>> list1
['uzi', '雪人', '雪人', 1]
>>> list1.count(1)
1
>>> list1.count('雪人')
2
>>> list1.index('雪人')
1
# 查找,从左往右返回查找第一个指定元素的索引,如果没有找到,报错
>>> list1.index('雪人')
1
>>> list1.index(10)
Traceback (most recent call last):
 File "<stdin>", line 1, in <module>
ValueError: 10 is not in list
# in 从左往右返回查找到的第一个指定元素的索引,如果没有找到则报错
>>> list2 = [1,2,3,4]
>>> 1 in list2
True
>>> 10 in list2
False
4. 列表的顺序
# 顺序倒序
>>> list1
['uzi', '雪人', '雪人', 1, 1, 2, '诹手']
>>> list1.reverse()
>>> list1
['诹手', 2, 1, 1, '雪人', '雪人', 'uzi']
# 按照我们的ascii 码进行排序
>>> list.sort()
>>> list1
['诹手', 2, 1, 1, '雪人', '雪人', 'uzi']
>>> list1.sort()
Traceback (most recent call last):
 File "<stdin>", line 1, in <module>
TypeError: unorderable types: int() < str()
>>> list
[1, 2, 3]
>>> list2 = [3,2,1]
>>> list2.sort()
>>> list2
[1, 2, 3]
>>>
# 注意:列表内不同的数据之间,不能互相做比较否则会报错
5. list 函数
# list(),一个序列作为参数把它转换为列表,如果参数是 list,那么参数就会被鸳鸯返回。
>>>a = ‘abc’
>>>list(a)
[‘a’,’b’,’c’]
# 如何将列表中的元素变成字符串?
# 在这里我们可以使用 join 语法,如下示例:
>>> a = ['a','b','c']
>>> ''.join(a)
'abc'
# 如果列表中的元素为 int 类型,我们如何把元素拼接在一起呢?
# 可以先使用列表寻找然后使用str()语法把元素变成字符串然后拼接在一起,如下示例:
>>>a = [1,2,3]
>>>''.join([str(i) for i in a])
‘123’
# 注意:如果你定义了 list 这个变量,再用 list()这个函数时会报错。
6. 列表的切片操作
# 上一篇文章我们学习了字符串的切片,既然列表有序,可得出它也有下标值,也可以进行切片处理。
>>> lsit1 = [1,2,3,4,5,6,7,8]
>>> lsit1[1]
2
>>> lsit1[-1]
8
>>> lsit1[1:4]
[2, 3, 4]
>>> lsit1[1:6:2]
[2, 4, 6]
>>> lsit1[1:6:-1]
[]
>>> lsit1[6:1:-1]
[7, 6, 5, 4, 3]
>>> lsit1[6:-1:-1]
[]
>>> lsit1[6:1:-1]
[7, 6, 5, 4, 3]
>>> lsit1[6:1:-2]
[7, 5, 3]

Python元组

定义

元组是有序的,不可修改的,以逗号分割的,以小括号包围的序列,可以通过()tuple() 函数定义。 不能修改,叧有在定义的一瞬间可以修改。 元组的优点: 由于元组不可变,所以遍历元组比列表要快(较小的性能提升)。 由于元组不可变,所以元组中的数据被写保护,这也可以想到,一些软件比较重要的数据都是用元组存储的。

如何创建元组:

>>> num = (11,22,33,'aa')
>>> num
(11, 22, 33, 'aa')
>>> num = 1,2,3,'a'
>>> num
(1, 2, 3, 'a')
>>> 1,2,3
(1, 2, 3)
>>> type(num)
<class 'tuple'>
>>> num = (2)
>>> num
2
>>> type(num)
<class 'int'>
>>> num = (1,)
>>> num
(1,)
>>> (1+1)*2
4

为什么会出现这种情况呢?,Python 中的()同样也表示数学运算的一个基本符号,比如(1+1) *2,所以这就和元组的这个小括号产生歧义,当元组中叧有一个元素,而又没有逗号的时候,它会把这个元素运算出来,这个小括号会被 Python 解释器识别为一个运算符号,所以得到的是那个元素本身的数据类型

访问元组

>>> num
(1, 2, 3, 'a')
>>> num[1]
2
>>> num[2]
3

修改元组

说明:Python 中不允许修改元组的数据,包拪不能能删除其中的元素。 元组是不可变得,也就是该元组中得元素在被赋值后不能改变。但是,如果元素本身是一个可变数据类型的列表,那么其嵌套项可以被改变。

>>> num = (1,'a',[1,2])
>>> num[2].append(3)
>>> num
(1, 'a', [1, 2, 3])
>>>

元组不能修改:

>>> num[0] = 2
Traceback (most recent call last):
 File "<stdin>", line 1, in <module>
TypeError: 'tuple' object does not support item assignment
>>>

tuple 函数

tuple 函数的功能于 list 函数基本上一样的,做一个序列作为参数把它转换为元组,如果参数是元 组,那么该参数就会被原样返回。

列表转元组

>>> num = ['诹手','ez','雪人','寒冰']
>>> num2 = tuple(num)
>>> num2
('诹手', 'ez', '雪人', '寒冰')
# 字符串转元组
>>> str1 = 'hello'
>>> str1 = tuple(str1)
>>> str1
('h', 'e', 'l', 'l', 'o')
>>> num2
('诹手', 'ez', '雪人', '寒冰')
# 元组转元组
>>> num3 = tuple(num2)
>>> num3
('诹手', 'ez', '雪人', '寒冰')
str1 = 'hello'
>>>a = tuple(str1)
>>>a
('h', 'e', 'l', 'l', 'o')
>>>''.join(a)
'hello'
>>>a = (1,2,3)
>>>''.join([str(i) for i in a])
# 嵌套元组访问的示例
>>> tup1 = (('诹手','寒冰'),('雪人','猴子'),('孙尚香','吃鸡'))
>>> tup1[0]
('诹手', '寒冰')
>>> tup1[1]
('雪人', '猴子')
>>> tup1[2]
('孙尚香', '吃鸡')
>>> tup1[0][1]
'寒冰'
>>> tup1[1][1]
'猴子'
>>>
# 元组的索引和字符串以及列表完全一致。
>>> tup2 = (0,1,2,3,4,5,6)
>>>
>>> tup2
(0, 1, 2, 3, 4, 5, 6)
>>>
>>> tup2[0]
0
>>> tup2[1]
1
>>> tup2[-1]
6
>>> tup2[0:4]
(0, 1, 2, 3)
>>> tup2[0:]
(0, 1, 2, 3, 4, 5, 6)
>>> tup2[0:4:2]
(0, 2)
>>> tup2[::2]
(0, 2, 4, 6)
>>> tup2[::-1]
(6, 5, 4, 3, 2, 1, 0)
>>> tup2[1:4:-1]
()
>>> tup2[4:1:-1]
(4, 3, 2)

Python元组的方法

17.Python 列表、元组、字典、集合-icbug创客

>>> tup2
(0, 1, 2, 3, 4, 5, 6)
>>> tup2.index(0)
0
>>> tup2.index(1)
1
>>> tup2.index(2)
2
>>> tup2.count(2)
1
>>> tup2.count(4)
1
>>> tup2.count(10)
0
>>>

Python 元组与列表的区别

  1. 元组和列表都是有序的,元组不可修改,列表可修改。

  2. 元组和列表的元素可以是任何类型

  3. 元组的元素长度可以任意

Python字典

概述

字典是一个无序的数据集合,序列类型用有序的数字键做索引将数据以数组的形式存储。

在字典中能获得的有序集合只能是键的集合或者是值得集合,方法keys()或者value()返回一个列表,该列表是可以排序的,也可以使用items()方法得到包含键、值对的元组的列表来进行排序,字典本身是无序的。

哈希表拥有很好的性能,从而在使用键进行查询的时候,速度很快。

字典的特性

字典和列表一样,也能够存储多个数据,字典中的值并没有特殊顺序。 列表中找某个元素时,是根据下标进行的,如果下标很多,查找数据不方便。当索引不好用时,使用 字典,是你最好的选择。 字典的每个元素由 2 部分组成,键:值。例如 'name':'班长' ,'name'为键,'班长'为值字典由键值
组成
字典是 Python 基础数据类型当中唯一 一个映射关系的数据类型; 由于字典无序,所以我们定义字典和字典生成之后的元素的顺序是不同的;

格式

info = {'name':'for','addr':'beijing','age':18}
获取字典中的元素
# 利用键名
>>> info = {'name':'for','addr':'beijing','age':18}
>>> type(info)
<class 'dict'>
>>> info['name']
'for'
>>> info['age']
18
#get方法
>>> info.get('name')
'for'

注意:get 方法如果没有找到相应的值,就会输出 None,后面也可以带默认的值,工作中常用

1.添加和修改
>>> info = {'name':'for','addr':'beijing','age':18}
>>> info['like'] = '玛利'
>>> info
{'name': 'for', 'like': '玛利', 'age': 18, 'addr': 'beijing'}
#更改
>>> info['like'] = '武藤兮'
>>> info
{'name': 'for', 'like': '武藤兮', 'age': 18, 'addr': 'beijing'}
>>>
2.删除
>>> info
{'name': 'for', 'like': '武藤兮', 'age': 18, 'addr': 'beijing'}
>>> del info['like']
>>> info
{'name': 'for', 'age': 18, 'addr': 'beijing'}
>>>
3.Python的字典特点

因为字典是无序的,所以字典没有索引值;

因为字典没有索引值,所以字典键取值,(字典的键相当列表的索引);

因为字典以键取值,所以字典的键唯一且不可修改;

因为字典的键不可修改,所以列表和字典等可变类型的数据不可以给字典做键。

Python字典的常见操作

17.Python 列表、元组、字典、集合-icbug创客

>>> info = {'name': 'for', 'age': 18, 'addr': 'beijing'}

返回一个包含字典所有 key 的列表

>>> info.keys()
dict_keys(['name', 'age', 'addr'])
>>> info['like'] = '吉泽'
>>> info
{'name': 'for', 'like': '吉泽', 'age': 18, 'addr': 'beijing'}
>>> info.keys()
dict_keys(['name', 'like', 'age', 'addr'])

返回一个包含字典所有 vaule 的列表

>>> info.values()
dict_values(['for', '吉泽', 18, 'beijing'])

以键取值,如果指定键不存在,默认返回 None,可以指定这回内容

>>> info.get('like')
'吉泽'

设置默认,如果键存在,返回值,如果键不存在,创造键,值默认为 None,值也可以自定义

setdefault(key,default=None)
>>> info.setdefault('play')
>>> info
{'play': None, 'name': 'for', 'like': '吉泽', 'age': 18, 'addr': 'beijing'}
>>> info['play'] = '绑捆'
>>> info
{'play': '绑捆', 'name': 'for', 'like': '吉泽', 'age': 18, 'addr': 'beijing'}

以字典格式更新指定键的内容,如果键不存在,创建键和值

>>> info.update({'cosplay':'ez'})
>>> info
{'cosplay': 'ez', 'name': 'for', 'age': 18, 'addr': 'beijing', 'like': '吆泽', 'play': '捆绑'}

# 返回字典键值呈元组形式的格式
>>> info.items()
dict_items([('cosplay', 'ez'), ('name', 'for'), ('age', 18), ('addr', 'beijing'), ('like', '吆泽'),('play', '捆绑')])
# 测量字典,键值对的个数(整体)
>>> len(info)

17.Python 列表、元组、字典、集合-icbug创客

弹出,返回回并删除指定键对应的值

>>> info = {'cosplay': 'ez', 'name': 'for', 'age': 18, 'addr': 'beijing', 'like': '吆泽', 'play': '捆绑'}
>>> info.pop('age')
18

随机弹出一个键值元组,这里随机的原因是因为字典无序

>>> info = {'cosplay': 'ez', 'name': 'for', 'addr': 'beijing', 'like': '吆泽', 'play': '捆绊'}
>>> info.popitem()
('cosplay', 'ez')

清空字典

>>> info1 = {'name':'for','age':10}
>>> info1
{'name': 'for', 'age': 10}
>>> info1.clear()
>>> info1
{}

判断指定的键是否在字典当中

>>> 'name' in info
True
>>> 'namea' in info
False

通过for 循环的语法结构,我们可以遍历字符串、列表、元组、字典等数据结构

>>> for i in info:
... print(i)
...
name
addr
like
play
>>> for i in info.values():
... print(i)
...
for
beijing
吆泽
捆绊

Python集合

集合定义

集和是一组无序不重复的元素集和。 集和与之前列表、元组类似,可以存储多个数据,但是这些数据是不重复的。 可以使用大括号 { } 或者 set() 函数创建集合,注意:创建一个空集和必项用 set() 而不是 { },因 为 { } 是用来创建一个空字典

集合创建方法
>>> s1 = {1,2,3,4}
>>> type(s)
<class 'set'>

元组里面没有相同的元素(去重)

>>> num = {1,2,3,4,5,6,6}
>>> num
{1, 2, 3, 4, 5, 6}
>>>

集和对象还支持交集(intersection),差集(difference)、并集呾对称差集(sysmmetric_difference)

交集(&): 两个集合的公共部分

并集(|):两个集合合并,没有重复的元素。

差集(-): 只有前项有的元素,不存在后项中的元素

对称差集(^):只在 a 或 b 中,但是不会同时出现在二者中

前提:

>>> a = set('1234')
>>> b = set('3456')

交集(&): 两个集合的公共部分

>>> a&b
{'4', '3'}

并集(|):两个集合合并,没有重复的元素。

>>> a|b
{'1', '6', '5', '2', '4', '3'}

差集(-): 只有前项有的元素,不存在后项中的元素

>>> a-b
{'1', '2'}

对称差集(^):只在 a 或 b 中,但是不会同时出现在二者中

>>> a^b
{'1', '6', '5', '2'}
>>>

set、list、tuple 之间可以相互转换

>>> a = 'hello'

字符串转列表

>>> b = list(a)
>>> b
['h', 'e', 'l', 'l', 'o']

字符串转元组

>>> c = tuple(a)
>>> c
('h', 'e', 'l', 'l', 'o')

字符串转集合

>>> d = set(a)
>>> d
{'l', 'e', 'o', 'h'}
>>> a
'hello'
>>> b
['h', 'e', 'l', 'l', 'o']
>>> c
('h', 'e', 'l', 'l', 'o')
>>> d
{'l', 'e', 'o', 'h'}
>>>
集合操作

17.Python 列表、元组、字典、集合-icbug创客

s.add(x)
>>> thisset = set(("Google", "Runoob", "Taobao"))
>>> thisset.add("Facebook")
>>> print(thisset)
{'Google', 'Taobao', 'Runoob', 'Facebook'}

还有一个方法,也可以添加元素,且参数可以是列表,元组,字典等,语法格式如下:

s.update(x)

注:x 可以是多个值,用逗号分隔开

>>> thisset = set(("Google", "Runoob", "Taobao"))
>>> thisset.update({1,3})
>>> print(thisset)
{3, 'Google', 'Taobao', 'Runoob', 1}
>>> 
>>> thisset.update([1,4],[5,6])
>>> print(thisset)
{'Taobao', 1, 3, 4, 5, 6, 'Google', 'Runoob'}

移除元素

s.remove(x) #删除集合中的指定元素,当指定的元素不存在的时候会报错
>>> thisset = set(("Google", "Runoob", "Taobao"))
>>> thisset.remove("Taobao")
>>> print(thisset)
{'Google', 'Runoob'}
>>> 
>>> thisset.remove("Facebook")
Traceback (most recent call last):
 File "<pyshell#92>", line 1, in <module>
 thisset.remove("Facebook")
KeyError: 'Facebook'
>>>
s.discard(x)
>>> thisset = set(("Google", "Runoob", "Taobao"))
>>> thisset.discard("Facebook")
>>> print(thisset)
{'Google', 'Taobao', 'Runoob'}
>>> thisset.discard("Google")
>>> print(thisset)
{'Taobao', 'Runoob'}
s.pop()
>>> thisset = set(("Google", "Runoob", "Taobao", "Facebook"))
>>> thisset.pop()
'Google'
>>> print(thisset)
{'Taobao', 'Runoob', 'Facebook'}

17.Python 列表、元组、字典、集合-icbug创客

通用方法整合

17.Python 列表、元组、字典、集合-icbug创客

17.Python 列表、元组、字典、集合-icbug创客

注意,in 在对字典操作时,判断的是字典的键

Python 内置函数

Python 包含了以下内置函数

常见问题FAQ

本站资源是否全部免费?
本站文章和普通速度下载资源免费,高速下载资源和讲解视频需要成为SVIP才能查看哦!
本站采用标准 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明!
icbug创客 » 17.Python 列表、元组、字典、集合

发表评论

CAPTCHAis initialing...