Python第五课(数据类型2)

Python第五课(数据类型2)    >>>转到思维导图>>>转到中二青年

列表list

count()用来统计列表某个元素的个数

>>> l = [1,2,3,4,5,6,7]
>>> res = l.count(8)
>>> print(res)
0

 

clear()用来清除列表元素

>>> res = l.clear()
>>> print(res)
None
>>> print(l)
[]

 

reverse()用来将列表反转

>>> l = [1,2,3,4,5,6,7]
>>> print(id(l))
2271674158920
>>> l.reverse()
>>> print(l)
[7, 6, 5, 4, 3, 2, 1]
>>> print(id(l))
2271674158920

 

sort()按升序将列表元素排序

>>> l.sort()
>>> print(l)
[1, 2, 3, 4, 5, 6, 7]
>>> print(id(l))
2271674158920

 

队列:先进先出

堆栈:先进后出

能存多个值,有序,可变

 

元组tuple

作用:能够存储多个元素,元素与元素之间逗号隔开,元素可以是任意类型,元组不能被修改

定义:在()内用逗号分隔开多个任意类型的值。与列表类型比,只不过吧[ ]换成了( )

在定义容器类型的时候,哪怕内部只有一个元素,也要用逗号隔开区分一下

list[0]按索引取值

>>> t = (1, 2, 3, 'a', 'b', [1, 2, 3])
>>> print(t[0])
1
>>> print(t[1])
2
>>> print(t[-1])
[1, 2, 3]
>>> print(t[-1][0])
1
>>> t[-1][0] = '我改了'
>>> print(t)
(1, 2, 3, 'a', 'b', ['我改了', 2, 3])

 

list[::2]切片(顾头不顾尾,步长)

>>> print(t[::2])
(1, 3, 'b')

len()长度

>>> print(len(t))
6

 

in和not in成员运算

>>> print('a' in t)
True

 

循环

for i in t:
    print(i)

 

能存多个值,有序,不可变

字典dict

作用:记录多个值,每一个值都对应的key用来描述value的作用。

定义:在{}内用逗号分隔开多 个key:value,其中value可以是任意类型,而key必须是不可变的类型,通常情况下应该str类型

d = {'name':'jason','password':123}  # d = dict( {'name':'jason','password':123})

 

字典的key是不能重复的。要唯一表示一条数据。如果重复了,只会按照最后一组城府的键值对存储

dict['key']='value'安key存取值:可存可取。当key不存在的情况下,会自动新增一个键值对

>>> d3 = {'name':'jason','password':'123'}
>>> print(id(d3))
2052650650072
>>> print(d3['name'])
jason
>>> d3['age'] = 18
>>> print(d3,id(d3))
{'name': 'jason', 'password': '123', 'age': 18} 2052650650072

 

len()统计键值对的个数

>>> print(len(d3))
3

 

in和not in成员运算,对于字典来说只能判断key值

>>> d3 = {'name':'jason','password':'123'}
>>> print('123' in d3)
False
>>> print('name' in d3)
True

 

del dict['key']删除键值对

>>> d3 = {'name':'jason','password':'123'}
>>> del d3['name']
>>> print(d3)
{'password': '123'}

 

dict.pop('key')弹出的仅仅是value。当键不存在的时候直接报错

>>> d3 = {'name':'jason','password':'123'}
>>> res = d3.pop('name')
>>> res = d3.pop('age')
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
KeyError: 'age'
>>> print(res)
jason
>>> print(d3)
{'password': '123'}
>>> d3.clear()
>>> print(d3)
{}

 

print(dict.keys())  # dict_keys(['key1', 'key2'])

>>> d1 = {'name':'jason','password':123}
>>> print(d1.keys())
dict_keys(['name', 'password'])
>>> for k in d1.keys():
...     print(k)
...
name
password

 

print(dict.values())  # dict_values(['value1', 'value2'])现在看做一个列表即可

>>> print(d1.values())
dict_values(['jason', 123])

 

print(dict.items())  # dict_items([('key1', 'key2'), ('value1', 'value2')])把他看做是列表套元组,元组的第一个元素是字典的key,第二个元素是字典的value

>>> print(d1.items())
dict_items([('name', 'jason'), ('password', 123)])

 

dict.get('key','自定义返回值')根据key获取value。当key在字典中时返回对应的value;当key不在字典中时,不报错,默认返回none,也可自定义返回值。

>>> d1 = {'name':'jason','pwd':123}
>>> print(d1['name'])
jason
>>> print(d1['age'])
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
KeyError: 'age'
>>> print(d1.get('name','你给我的name在字典的key中'))
jason
>>> res = d1.get('age')
>>> res1 = d1.get('xxx','你给我的age在字典的key中')
>>> print(res1)
你给我的age在字典的key中
>>> print(d1.get('xxx','asdsad'))
asdsad

 

list=['key1','key2'] # print(dict.fromkeys(list,'value')) # {'key1':'value','key2':'value'} # 快速创建一个字典

>>> l1 = ['name','password','age','hobby']
>>> print(dict.fromkeys(l1,123))
{'name': 123, 'password': 123, 'age': 123, 'hobby': 123}

 

dict.popitem()尾部以元组的形式弹出键值对

>>> print(d1.popitem())
('age', 18)

 

dict.setdefault('key1','value2') # 当键存在的情况下,返回对应值'value1';当键不存在的情况下,新增键值对'key1','value2',并且将新增的键值对的值'value2'返回给你。

>>> d1 = {'name':'jason','pwd':123}
>>> res1 = d1.setdefault('name','xxoo')
>>> print(d1,res1)
{'name': 'jason', 'pwd': 123} jason
>>> res2 = d1.setdefault('age',18)
>>> print(d1,res2)
{'name': 'jason', 'pwd': 123, 'age': 18} 18

 

dict.update()

>>> d1 = {'name':'jason','pwd':123}
>>> d2 = {"age":18}
>>> d1.update(d2)
>>> print(d1)
{'name': 'jason', 'pwd': 123, 'age': 18}
>>> d1['age'] = 19
>>> print(d1)
{'name': 'jason', 'pwd': 123, 'age': 19}
>>> d1.update(age=666)
>>> print(d1)
{'name': 'jason', 'pwd': 123, 'age': 666}

 

存多个值,无序,可变

 

集合set

作用:去重,关系运算

定义:在{ }内用逗号分开的多个值,在定义空集合的时候只能用关键字set(),如果只写了一个大括号,python默认将他当做字典类型

>>> s = {1,2,3,4,5,6}
>>> print(type(s))
<class 'set'>
>>> s1 = set()
>>> print(type(s1))
<class 'set'>
>>> x = {}
>>> print(type(x))
<class 'dict'>
>>> t = ()
>>> print(type(t))
<class 'tuple'>
>>> d = {[1,2]:'name'}
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
TypeError: unhashable type: 'list'

 

集合三大特性:1.每个值都必须是不可变类型;2.元素不能重复;3.集合内元素无序

# s = {1,2,3,4,5,6,'a',(1,2),[1,2]}  # 报错
# s = {1,2,3,4,5,6,'a',(1,2),{"name":'jason'}}  # 报错
>>> s = {1,2,2,2,2,2,2,2,2,2,3,4,4,4,4,4,5}
>>> print(s)  # 自动将重复的元素 去除
{1, 2, 3, 4, 5}
>>> s = {1, 2, 3, 4, 5, 6}
>>> print(s[1])
# 注意集合的目的是将不同的值存放到一起,不同的集合间用来做关系运算,无需纠结于集合中单个值

 

|合集

&交集

-差集

^对称差集

==是否相等

>=父集:一个集合是包含另外一个集合

<=子集

pythons = {'jason', 'nick', 'tank', 'egon', 'kevin', 'owen', 'alex'}
linux = {'frank', 'jerry', 'tank', 'egon', 'alex'}
# 既报名python也报名linux的学生姓名
print(pythons & linux)  # 交集
 
# 只报名python的学生姓名
print(pythons - linux)
 
# 只报名linux的学生姓名
print(linux - pythons)
 
# 没有同时报名两门课程的学生姓名
print(pythons ^ linux)  # 对称差集
 
# 取出所有报了名的学生姓名
print(pythons | linux)

 

set.update({1,2,3})将集合并入得到合集

>>> s1={1,2,3}
>>> s1.update({3,4,5})
>>> print(s1)
{1, 2, 3, 4, 5}

 

set.pop()随机弹出一个元素

>>> s1={1,2,3}
>>> res=s1.pop()
>>> print(res)
1
>>> print(s1)
{2, 3}

 

set.remove(3) # 单纯的删除,返回值为None

>>> s1={1,2,3}
>>> res=s1.remove(3)
>>> print(res)
None
>>> print(s1)
{1, 2}

 

set.discard(4) # 删除的元素不存在会报错

>>> s1={1,2,3}
>>> res=s1.discard(3)
>>> print(s1)
{1, 2}
>>> print(res) ##单纯的删除,返回值为None
None
>>> s1.remove(444444) #删除的元素不存在则报错
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
KeyError: 444444
>>> s1.discard(444444) #删除的元素不存在不会报错

 

set.add(('tuple',))将容器类型也当成一个元素传入

>>> s1={1,2,3}
>>> s1.add(4)
>>> print(s1)
{1, 2, 3, 4}

END

 

posted @ 2019-07-04 17:11  宋人杰  阅读(193)  评论(0编辑  收藏  举报