200字范文,内容丰富有趣,生活中的好帮手!
200字范文 > python列表 元组 字典 集合-python基础数据类型

python列表 元组 字典 集合-python基础数据类型

时间:2019-12-28 08:43:55

相关推荐

python列表 元组 字典 集合-python基础数据类型

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

本章所讲内容:

3.1 python列表

3.2 python元组

3.3 python字典

3.4 Python集合

3.1 python列表

3.1.1 python列表的概述

想一想:

前面学习的字符串可以用来存储一串信息,那么想一想,怎样存储咱们班所有同学的名字呢?

定义100个变量,每个变量存放一个学生的姓名可行吗?有更好的办法吗?

答:【列表】

如果存储多个数据的用列表;例如存储100个人的名字 或者存储100个人的年龄。

很多个信息描述一个人需要用字典。字典用来描述一个信息的时候。

列表的定义:

列表是一个有序的,可修改的,元素以逗号分割,以中括号包围的序列。

列表的索引和字符串的索引类似,但不完全相同,因为列表可以修改,所以我们可以通过列表的索引来修改列表。

定义列表

name = [] name等于中括号就是定义一个空列表

列表用例存储数据的

3.1.2 python列表的定义

#定义一个空列表

>>> name = []

>>> type(name)

<class 'list'>

#注意:列表里面的数据类型是可变的,甚至可以嵌套一个列表

>>> name = ['12',10]

>>> name

['12', 10]

>>> type(name)

<class 'list'>

3.1.3 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]

列表的删除

弹出,返回并删除指定索引位上的数据,默认删除索引为-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]

列表的修改和查找

>>> 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从左到右进行查找,找到后返回true 找不到返回flase

>>> list2 = [1,2,3,4]

>>> 1 in list2

True

>>> 10 in list2

False

列表的排序

顺序倒序

>>> 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]

>>>

注意:列表内不同数据类型之间,不能相互比较。否则会出错。

list函数

list(),以一个序列作为参数并把它转换为列表,如果参数是list,那么该参数就会被原样返回。

>>>a = ‘abc’

>>>list(a)

[‘a’,’b’,’c’]

如何将列表中的变成字符串?

>>> a = ['a','b','c']

>>> ''.join(a)

'abc'

>>>a = [1,2,3]

>>>''.join([str(i) for i in a])

‘123’

注意:如果你在前面定义了list这个变量,再用list()这个函数时会报错。

列表的切片操作

上节课咱们学习了,字符串的切片,既然列表有序,可得出它也有下标值,也可以进行切片处理。

>>> 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]

>>>

3.2 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

>>>

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

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 = ('a','b','c','d','e','xuegod')

>>> tup2

('a', 'b', 'c', 'd', 'e', 'xuegod')

>>> tup2[0]

'a'

>>> tup2[-1]

'xuegod'

>>> tup2[0:4]

('a', 'b', 'c', 'd')

>>> tup2[0:]

('a', 'b', 'c', 'd', 'e', 'xuegod')

>>> tup2[0:4:2]

('a', 'c')

>>> tup2[::2]

('a', 'c', 'e')

>>> tup2[::-1]

('xuegod', 'e', 'd', 'c', 'b', 'a')

>>> tup2[1:4:-1]

()

>>> tup2[4:1:-1]

('e', 'd', 'c')

3.1.1 python元组的方法

>>> tup2 = ('a', 'b', 'c', 'd', 'e', 'xuegod')

>>> tup2.index('a')

0

>>> tup2.index('b')

1

>>> tup2.index('f')

Traceback (most recent call last):

File "<stdin>", line 1, in <module>

ValueError: tuple.index(x): x not in tuple

>>> tup2.count('b')

1

>>> tup2.count('d')

1

3.2.2 python元组与列表的区别

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

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

3、元组的元素长度可以任意。

3.3 python字典

3.3.1 python字典的概述

字典的定义:

字典是一个无序的,可以修改的,元素呈键值对的形式,以逗号分割的,以大括号包围的序列;

字典是python基础数据类型当中唯一一个映射关系的数据类型;

由于字典无序,所以我们定义字典和字典生成之后的元素的顺序是不同的;

生活中的字典特点:前几页相当于目录结构,通过偏旁部首可以查找内容。

3.3.2 python字典

字典和列表一样,也能够存储多个数据,字典中的值并没有特殊顺序。

列表中找某个元素时,是根据下标进行的,如果下标很多,查找数据不方便。

当索引不好用时,使用字典,字典中找某个元素时字典的每个元素由2部分组成,键:值。例如 'name':'班长' ,'name'为键,'班长'为值,字典由键值组成。

格式:

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,后面也可以带默认的值,工作中常用。

添加和修改

>>> 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'}

>>>

删除

>>> info

{'name': 'for', 'like': '武藤兰', 'age': 18, 'addr': 'beijing'}

>>> del info['like']

>>> info

{'name': 'for', 'age': 18, 'addr': 'beijing'}

>>>

3.3.3 python字典的特点

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

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

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

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

3.3.4 python字典的常见操作

>>> 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)

6

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

>>> 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 ... in ...:的语法结构,我们可以遍历字符串、列表、元组、字典等数据结构。

>>> for i in info:

... print(i)

...

name

addr

like

play

>>> for i in info.values():

... print(i)

...

for

beijing

吉泽

捆绑

这个了解下:

3.4 Python集合

3.4.1 集合定义

集合是一组无序不重复的元素集合。

集合与之前列表、元组类似,可以存储多个数据,但是这些数据是不重复的。

可以使用大括号{ }或者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'}

>>>

3.4.2集合操作

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'}

可变类型与不可变类型

可变类型,值可以改变:

列表 list字典 dict集合 set

不可变类型,值不可以改变:

数值类型 int, long(python3去除), bool, float字符串 str元组 tuple

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

公共方法

python内置函数

Python包含了以下内置函数

总结:

3.1 python列表

3.2 python元组

3.3 python字典

3.4 Python集合

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。