Tools
首页
画图
音乐
采集
记事
博客
实验室
登录
lypeng
146
文章
11
分类
46
记事
分类
生活-[23]
Linux-[24]
前端-[9]
数据库-[16]
PHP-[31]
git-[7]
其他-[6]
python-[20]
算法-[4]
React-Native-[4]
中草药-[2]
广告位1
广告位2
首页
/ python
返回列表
python(四)列表元组字典集合复习and区别与相互转换
阅读:685
发布:2018-04-10
作者:lypeng
## 区别 | | 列表 | 元组 | 集合 | 字典 | | --- | --- | --- | --- | --- | | 英文 | list | tuple | set | dict | | 可否读写 | 读写 | 只读 | 读写 | 读写 | | 可否重复 | 是 | 是 | 否 | 是 | | 存储方式 | 值 | 值 | 键(不能重复) | 键值对(键不能重复) | | 是否有序 | 有序 | 有序 | 无序 | 无序 | | 定义 | `[1,'a']` | `('a', 1)` | `set([1,2])` 或 `{1,2}` | `{'a':1,'b':2}` | | 添加 | `insert append` | 只读 | `s.add(3)` | `d['key'] = 'value'` | | 删除 | `pop(索引)` | `整个删除 del t` | `s.remove(55) s.pop()随机删 s.clear()清空` | `d.pop(key)` | | 修改 | `l[0]=5` | 只读 | 无 | `d['key'] = 'value' d.update({'a':5})` | | 查询 | `l[2:]` | `t[0]` | 无 | `d['a']` `score.get('zhang')` | ## 复习 抛开上篇文章,再次实战,巩固下,把能想到的大概过一遍: ### 列表list ```python #增加值,往后面追加(append),或者中间位置插入(insert) #补充------------------------------------------ >>> list2.insert(1,'555') //第一个参数索引位置,第二个参数插入值 >>> list2 ['a', '555', 'b', 'c', 'd', 'dddd', 'f', 'g'] #------------------------------------ >>> list1=[1, 2, 3, 4] >>> list1.append(['g',888]) >>> list1 [1, 2, 3, 4, ['g', 888]] >>> a=456 >>> list1.append(a) >>> list1 [1, 2, 3, 4, ['g', 888], 456] >>> list1.append('a') >>> list1 [1, 2, 3, 4, ['g', 888], 456, 'a'] >>> list1[0]=999 >>> list1 [999, 2, 3, 4, ['g', 888], 456, 'a'] #修改,像数组赋值一样 #删除,删除第几个用索引 pop #排序,只能对相同类型的元素排序,即都是数字,或都是字符串,否则报错 >>> list1 [2, 3, 4, 999, ['g', 888], 456, 'a'] >>> list1.sort() Traceback (most recent call last): File "
", line 1, in
list1.sort() TypeError: unorderable types: list() < int() >>> list1.pop(4) ['g', 888] >>> list1 [2, 3, 4, 999, 456, 'a'] >>> list1.sort() Traceback (most recent call last): File "
", line 1, in
list1.sort() TypeError: unorderable types: str() < int() >>> list1 [2, 3, 4, 456, 999, 'a'] >>> list1.pop() 'a' >>> list1.sort() >>> list2=['a','b','c','g','d','a','f'] >>> list2.sort() >>> list2 ['a', 'a', 'b', 'c', 'd', 'f', 'g'] >>> list2[0]='dddd' >>> list2 ['dddd', 'a', 'b', 'c', 'd', 'f', 'g'] >>> list2.sort() >>> list2 ['a', 'b', 'c', 'd', 'dddd', 'f', 'g'] >>> ``` ### 元组tuple ```python #定义 >>> t = (1,2,3) #想不起来有什么操作,增加试试 >>> t.add(4) Traceback (most recent call last): File "
", line 1, in
t.add(4) AttributeError: 'tuple' object has no attribute 'add' >>> t.insert(4) Traceback (most recent call last): File "
", line 1, in
t.insert(4) AttributeError: 'tuple' object has no attribute 'insert' # tuple对象没有add与insert方法,新增行不通,增删改查都试试,来修改 # 其他的报错不粘贴了,只有查,只能读取内容 >>> t[0] 1 # 可以整个删除 >>> del t # 多个tuple可以连接 >>> t1=(2,2,3,4) >>> t2=(5,5,6,6) >>> t3=t1+t2 >>> t3 (2, 2, 3, 4, 5, 5, 6, 6) # 统计个数,返回第一次出现的索引 >>> t3.count(6) 2 >>> t3.index(5) 4 # 其他几个函数 >>> len(t3) 8 >>> min(t3) 2 >>> max(t3) 6 >>> list(t3) [2, 2, 3, 4, 5, 5, 6, 6] ``` ### 字典 ```python >>> dic1={'b': 2, 'a': 1, 'd': 4, 'c': 3} # 增删改查如下 >>> dic1['f']=8 >>> dic1.pop('a') >>> dic1.update({'f':99}) >>> dic1 {'d': 4, 'c': 3, 'b': 2, 'f': 99} >>> dic1['f']=888 # 其他 # dic1.keys(),dic1.items() ``` ### 集合 ```python # 不重复 >>> s = {2,2,2,2,4,4,3,1,55,6,777} >>> s {1, 2, 3, 4, 6, 777, 55} # 集合里面只能新增单个值或者元组,不能新增list或嵌套集合 >>> s.add(6,7,8,9) Traceback (most recent call last): File "
", line 1, in
s.add(6,7,8,9) TypeError: add() takes exactly one argument (4 given) >>> s.add((6,5,4)) >>> s {1, 2, 3, 4, 5, 6, 777, 55, (6, 5, 4)} >>> s.add({5,8,9}) Traceback (most recent call last): File "
", line 1, in
s.add({5,8,9}) TypeError: unhashable type: 'set' >>> s {1, 2, 3, 4, 5, 6, 777, 55, (6, 5, 4)} >>> s.add([88,99]) Traceback (most recent call last): File "
", line 1, in
s.add([88,99]) TypeError: unhashable type: 'list' # 删除 # pop() 随机删 # remove(55) 指定元素删 # 并集交集 # s1 & s2 s1|s2 ``` ## 转换 ### 1、列表元组转其他 ```python # 列表转集合(去重) list1 = [6, 7, 7, 8, 8, 9] set(list1) # {6, 7, 8, 9} #两个列表转字典 list1 = ['key1','key2','key3'] list2 = ['1','2','3'] dict(zip(list1,list2)) # {'key1': '1', 'key2': '2', 'key3': '3'} #嵌套列表转字典 list3 = [['key1','value1'],['key2','value2'],['key3','value3']] dict(list3) # {'key3': 'value3', 'key1': 'value1', 'key2': 'value2'} # 再次体现字典是无序的 # 列表、元组转字符串 >>> list2 = ['a','a','b'] >>> mm = "222".join(list2) >>> mm 'a222a222b' >>> nn = ''.join(list2) >>> nn 'aab' tup1 = ('a', 'a', 'b') ''.join(tup1) # 'aab ``` ### 2、字典转其他 ```python # 字典转换为字符串 >>> dic1 = {'a':1,'b':2} >>> str(dic1) "{'b': 2, 'a': 1}" # 字典key和value互转(原文a_dict写错了,应该是dic2) >>> dic2 = {'a': 1, 'b': 2, 'c': 3} >>> {value:key for key, value in a_dict.items()} Traceback (most recent call last): File "
", line 1, in
{value:key for key, value in a_dict.items()} NameError: name 'a_dict' is not defined >>> {value:key for key, value in dic2.items()} {1: 'a', 2: 'b', 3: 'c'} ``` ### 3、字符串转其他 ```python # 字符串转列表 s = 'aabbcc' list(s) # ['a', 'a', 'b', 'b', 'c', 'c'] # 字符串转元组 tuple(s) # ('a', 'a', 'b', 'b', 'c', 'c') # 字符串转集合 set(s) # {'a', 'b', 'c'} # 字符串转字典 dic2 = eval("{'name':'ljq', 'age':24}") # 切分字符串 a = 'a b c' a.split(' ') # ['a', 'b', 'c'] ``` ## 二、字典的分割、合并 ```python #分割: >>> base = {'A':1, 'B':2, 'C':3, 'D':4, 'E':5} >>> subkey = ['C', 'E'] >>> subdict=dict([(key, base[key]) for key in subkey]) >>> subdict {'C': 3, 'E': 5} #合并: #方式一: >>> d1={'user':'root','pwd':'1234'} >>> d2={'ip':'127.0.0.1','port':8080} >>> dict(d1, **d2) {'port': 8080, 'ip': '127.0.0.1', 'user': 'root', 'pwd': '1234'} #为什么要加两个*号 #class dict(mapping, **kwarg),第一个参数叫位置参数,第二个叫关键字参数 # dict(d1, **d2) 先生成一个字典d1,然后把字典d2合并到d1去,如果键存在,则覆盖,如下 >>> d3={'user':'zhangsan','pwd':'123456'} >>> d4={'pwd':'888888'} >>> dict(d3,**d4) {'user': 'zhangsan', 'pwd': '888888'} #方式二: d1={'user':'root','pwd':'1234'} d2={'ip':'127.0.0.1','port':8080} d3={} for k,v in d1.items(): d3[k] = v for k,v in d2.items(): d3[k] = v print(d3) ``` ## 三、list分割、合并 ```python a=[1,2,3,4,5,6] b=['a','b','c','d'] print(a+b) a=[1,2,3,4,5,6] b=['a','b','c','d'] a+=b print(a) a=[1,2,3,4,5,6] b=['a','b','c','d'] a.extend(b) print(a) a=[1,2,3,4,5,6] b=['a','b','c','d'] a[0:0]=b #把b添加到a的最前面,和extend正好相反 print(a) li = ['a','b','c'] res1=';'.join(li) res2=''.join(res1).split(';') ``` 参考文章:https://www.cnblogs.com/louis-w/p/8391147.html?_blank
------本文结束
感谢阅读------
上一篇:
python(三)列表元组字典集合(list tuple dict set)
下一篇:
python(五)函数