Python数据类型,列表、字典与集合

 1.python数据类型

按存储模型分类:

- 标量类型:数值,字符串

- 容器类型:列表,元组,字典

按是否可变分类:

- 可变类型:列表,字典

- 不可变类型:数字,字符串,元组

按访问类型分类:

- 直接访问:数字

- 顺序访问: 字符串,列表,元组

- 映射访问 :字典

 

2.python-字典

字典是由键值对(key-value)构成的映射数据类型,与java的map相似

-可以通过键的方式查找: "key" in 字典

 

创建字典:

  • 通过{}操作符创建字典
  • 通过dict()工厂方法创建字典
  • 通过fromkeys()创建具有相同值的字典

>>> adic={'name':'sss','age':18}           #通过{}操作符创建字典
>>> adic
{'name': 'sss', 'age': 18}

>>> adic2=dict((['name','bob'],['age',18]))        #通过dict()工厂方法创建字典
>>> adic2
{'name': 'bob', 'age': 18}

>>> adic3={}.fromkeys(('bob','alice'),23)      #通过fromkeys()创建具有相同值的字典
>>> adic3
{'bob': 23, 'alice': 23}

 

访问字典:

字典是映射类型,意味着它没有下标,访问字典中的值需要使用相应的键

>>> adic={'name':'bob','age':18}
>>> adic['name']
'bob'

 

更新字典:

通过键更新字典

-如果字典中有该键,则更新相关值

-如果字典没有该键, 创建该键值对

>>> a={'name':'bob','age':18}
>>> a
{'name': 'bob', 'age': 18}
>>> a['phone']='123156123'
>>> a
{'name': 'bob', 'age': 18, 'phone': '123156123'}

 

删除字典:

通过del可以删除字典中的元素或整个字典

使用内部方法clear可以清空字典

使用pop()方法可以弹出字典中的元素,也就是出栈操作

>>> a
{'name': 'bob', 'age': 18, 'phone': '123156123'}
>>> del a['phone']                                          #删除phone
>>> a
{'name': 'bob', 'age': 18}

>>> a
{'name': 'bob', 'age': 18}
>>> a.pop('age')                                         #出栈,最后一个字符被弹出
18
>>> a
{'name': 'bob'}

>>> a
{'name': 'bob', 'age': 18}
>>> a.clear()                                   #清空字典
>>> a
 

字典内建函数:

len():返回字典中元素的数目

>>> a
{'name': 'bob'}
>>> print(len(a))
1


copy():返回字典的副本,相当于对字典的拷贝

>>> b=a.copy()
>>> b
{'name': 'bob'}

 

items():将字典转换成列表并返回

>>> a={'name':'sss','age':18}
>>> a
{'name': 'sss', 'age': 18}
>>> b=a.items()
>>> b
dict_items([('name', 'sss'), ('age', 18)])

 

keys():返回所有键的列表

>>> a
{'name': 'sss', 'age': 18}

>>> a.keys()
dict_keys(['name', 'age']

 

values():返回字典中所有值的列表

>>> a
{'name': 'sss', 'age': 18}
>>> a.values()
dict_values(['sss', 18])

 

update(dic2):将两个字典的值合并到一起,将dict2添加到dict1

>>> c
{'phone': '1234654658'}
>>> a
{'name': 'sss', 'age': 18}
>>> a.update(c)
>>> a
{'name': 'sss', 'age': 18, 'phone': '1234654658'}

 

 3.列表

可以将列表当成普通的“数组”,它能保存任意数量类型的python对象

-列表支持下标和切片操作

-切片输出当前下标元素之后的值

-列表是有序,可变的数据类型

-列表中可以包含不同类型的对象

 

列表的内建函数:

列表方法操作
list.apend(obj)向列表中添加一个对象obj
list.count(objt)

返回obj在列表中出现的次数

list.extend(seq)

向列表中添加一个序列

lis.index(obj)返回obj的下标
list.insert(index.obj)在索引处添加obj
list.reverse()翻转列表
list.sort()排序,安装ascci码排序
list.remove(obj)删除一个obj

测试:

list.apend(obj):在末尾添加

['1', '2', 'a', 'sda', '21.1']
>>> lists.append('aa')
>>> lists
['1', '2', 'a', 'sda', '21.1', 'aa']

list.count(objt):统计某字符或字符串个数

>>> lists
['1', '2', 'a', 'sda', '21.1', 'aa']
>>> lists.count('1')
1

lists.extend(obj):添加一个序列或列表

>>> lists.extend("abc")                     #或lists.extend(['a','b','c']) 
>>> lists
['1', '2', 'a', 'sda', '21.1', 'aa', 'a', 'b', 'c']

list.reverse():翻转列表

>>> lists
['1', '2', 'sda', '21.1', 'aa', 'c', 'a', 'a']
>>> lists.reverse()
>>> lists
['a', 'a', 'c', 'aa', '21.1', 'sda', '2', '1']

list.sort():排序,按assci码,默认升序排序,

  • reverse -- 排序规则,reverse = True 降序, reverse = False 升序(默认)。

>>> lists
['a', 'a', 'c', 'aa', '21.1', 'sda', '2', '1']
>>> lists.sort()
>>> lists
['1', '2', '21.1', 'a', 'a', 'aa', 'c', 'sda']

list.remove(obj):删除第一个发现的字符

>>> lists
['1', '2', '21.1', 'a', 'a', 'aa', 'c', 'sda']
>>> lists.remove('a')
>>> lists
['1', '2', '21.1', 'a', 'aa', 'c', 'sda']

 

使用in或not in 判断成员关系(使用key值而不是value)

使用append方法向列表中追加元素(在列表的最后添加)

 

>>> lists
['1', '2', '3']
>>> '1' in lists
True
>>> 
 

4.元组

元组是静态的,一旦创建,则无法修改

与java加static修饰符作用一致

 

5.集合

数学上,把set称作做由不同的元素组成的集合,集合(set)的成员通常被称为集合元素

-集合对象是一组无重复对象的集合

-集合有两种类型:可变集合set,不可变集合forzenset

-集合支持用in和not in操作符检查成员

-能够用len()检查集合大小

-能够使用for循环迭代集合成员

 

>>> s=set("hello")          #定义hello 有两个l,重复值将被剔除
>>> s
{'h', 'o', 'e', 'l'}

 

集合类型操作符:

|:取并集

>>> s
{'h', 'o', 'e', 'l'}
>>> s2
{'w', 'd', 'l', 'r', 'o'}
>>> s1|s2
{'w', 'd', 'l', 'e', 'h', 'r', 'o'}
>>> 

&:取交集

>>> s
{'h', 'o', 'e', 'l'}
>>> s2
{'w', 'd', 'l', 'r', 'o'}
>>> s1|s2
{'l', 'o'}
>>> 

-:差补,将两个集合非重复部分列举出来,假设有s1,s2,s1-s2列举s1中s2没有的值

>>> s
{'h', 'o', 'e', 'l'}
>>> s2
{'w', 'd', 'l', 'r', 'o'}
>>> s2-s1
{'w, 'r','d'}
>>> 

 

集合内建函数:

set.add():添加成员

set.update():批量添加学员

set.remove():剔除成员

s.issubset(t):如果s是t的子集(t有s的全部值),则返回true

>>> a
{'d', 'c', 'a', 'f', 'e', 'b'}
>>> b
{'c', 'a', 'b'}
>>> a.issubset(b)
False

s.issuperset(t):如果s是t的超集(s有t的全部值),则返回true

>>> a
{'d', 'c', 'a', 'f', 'e', 'b'}
>>> b
{'c', 'a', 'b'}
>>> a.issuperset(b)
True

s.union(t):返回一个新集合,该集合是s和t的交集

>>> a
{'d', 'c', 'a', 'f', 'e', 'b'}
>>> b
{'c', 'a', 'b'}
>>> a.union(b)
{'d', 'b', 'c', 'a', 'f', 'e'}
 

s.difference(t):返回一个新集合,返回s在t中不存在值
>>> a
{'d', 'c', 'a', 'f', 'e', 'b'}
>>> b
{'c', 'a', 'b'}
>>> a.difference(b)
{'d', 'f', 'e'}
 

 

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值