Python中的列表,元组,字典以及集合的概念

版权声明:本文为博主原创文章,未经博主允许不得转载 https://blog.csdn.net/weixin_43533825/article/details/83716797

一、列表,元组,字典以及集合的对比图表

列表,元组,字典以及集合的对比图表
  列表 list 元组 tuple 字典 dict 集合 set
可否修改 可变 不可变 可变 可变
可否重复 可以 可以 可以 不可以
是否有序 有序 有序 无序 无序
存储方式 元素值 元素值 键值对 键值对

python内建函数:

  • len函数:返回序列中所包含元素的数量。
  • max函数:返回序列中最大的元素。
  • min函数:返回序列中最小的元素。

python中列表和元组两种数据结构属于有序(这里有序并不是指按照一定逻辑排序,而是指存储按照下标索引可以找到)的序列,而其中元组是不可修改的,下面分别介绍四种数据结构的概念和它们之间的相互转换

二、列表 list  '[]'

初始化:a = [1,2,'str'] 

除了可以通过索引直接访问元素,在python中可以使用分片(前包后不包)操作来访问一定范围内的元素

#coding:utf-8
a = [0,1,2,3,4,5,6,7,8,9]
print a[3:6] #按索引分片
print a[-3:-1]#从后面数,从-1开始
print a[-3]
print a[-3:0]#只要左边索引的元素值比右边索引的元素值出现晚,结果就为空
print a[-3:]
print a[:3]
print a[:]#相当于复制原序列
print a[1:8:2]#第三位索引为步长
print a[8:1:2]#只要左边索引的元素值比右边索引的元素值出现晚,结果就为空
print a[1:8:-2]#只要左边索引的元素值比右边索引的元素值出现晚,结果就为空—这里由于步长为负,是从后往前索引,1比8出现晚
print a[8:1:-2]
[3, 4, 5]
[7, 8]
7
[]
[7, 8, 9]
[0, 1, 2]
[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
[1, 3, 5, 7]
[]
[]
[8, 6, 4, 2]

除了可以通过索引下标和分片两种方式直接对列表元素操作之外,列表常用函数如下:

  • list() 函数:把元组,字符串等转换为列
    由于字符串和元组等不可修改,有时候这函数很有用;eg:list('hello')   输出: ['h','e','l','l','o']。
    如果要把列表转换为字符串,常用join函数。' '.join(somelist) 以空格连接列表元素
  • append() 函数:在列表末尾追加新对象,eg:list.append(x),没有返回值 print list
  • count() 函数:统计某个元素在列表中出现的次数,eg:list.count(x) ,返回出现次数 print list.count(x)
  • extend() 函数:可以用写列表扩展原来的列表,eg:a.extend(b),没有返回值 print a
  • index() 函数:找到元素下标,eg:list.index(x),返回下标 print list.index(x) ,如果没找到,会返回异常
  • insert() 函数:将对象插入到列表,eg:list.insert(3,'four') 没有返回值,print list
  • pop() 函数:移除列表元素,默认最后一个,pop(i)移除列表下标为i的列表值,list.pop() 返回被移除的值 print list.pop()
  • remove() 函数:移除列表中第一个匹配项,list.remove('be'),没有返回值,print list
  • reverse() 函数:将列表中元素反响存放,list.reverse() ,没有返回值,print list

三、元组 tuple '()'

初始化 a = (1,2,'str')

元组的意义

既然有了列表,元组又不可变,那么元组存在的意义是什么?

  • 元组可以在映射(和集合的成员)中当做键值对使用——而列表则不行
  • 元组作为很多内建函数和方法的返回值存在,也就是说必须对元组进行处理

元组定义的tips

  • 定义tuple时,必须确定元素值不可更改
  • 如果tuple只有一个元素,需要加逗号 a = (1,),如果定义为b = (1) 就会产生歧义

四、字典 dict '{}'

字典是一种通过名字来引用值的数据结构—映射(mapping)。

字典是无序的,通过键值对存储元素,通过键来访问成员,成员可以重复

字典常用函数如下:

  • len()函数:返回字典x中键值对的数量,len(x)
  • clear()函数:清除字典中所有的项,类似于list.sort(),没有返回值
  • copy()函数:这里是指浅复制,返回具有相同键值对的新字典 eg:y = x.copy()
  • fromkeys()函数:使用给定的键,建立新的字典,值为None,返回新的字典。eg:{}.fromkeys(['name','age'])
  • get()函数:访问字典,一般用d[]访问,如果字典不存在,会报错,用d.get('name'),会返回None
  • keys()函数:获得键的列表,d.keys(),将键以列表形式返回
  • values()函数:获得值的列表,同上
  • pop()函数:删除键值对,d.pop(k),没有返回值
  • update()函数:更新成员,若成员不存在,相当于加入,没有返回值
  • items()函数:获得由键值对组成的列表,返回列表,d.items()
#coding:utf-8
d = {1:'a',2:'b',3:'c',4:'d'}
print len(d)
c = d.copy()
print c
print {}.fromkeys(['str'])
print d.get(1)
print d.get(888)
print d.keys()
print d.values()
d.pop(1)
print d
print d.items()
4
{1: 'a', 2: 'b', 3: 'c', 4: 'd'}
{'str': None}
a
None
[1, 2, 3, 4]
['a', 'b', 'c', 'd']
{2: 'b', 3: 'c', 4: 'd'}
[(2, 'b'), (3, 'c'), (4, 'd')]

五、集合 set '{}'

集合是一个无序不重复元素集,python中的集合与其它

定义集合:set0 = {1,2,3,4}

集合常用函数如下:

  • add()函数:添加新元素,没有返回值,如果添加重复元素,不会报错,不添加而已
  • pop()函数:set集合无序,这里会随机删除一个元素,返回值为删除的元素

六、四种数据结构相互转换

#coding:utf-8
list1 = [1,2,2,3,4]
list2 = ['c1','c2','c3','c4','s','c']
list3 = [[1,'a'],[2,'b']]
set0 = set(list1)
d0 = dict(zip(list1,list2))
d1 = dict(list3)
str = '    '.join(list2).strip() #strip函数是去除首尾的空格     
print set0 #转换为集合
print d0   #转换为字典,list1有重复元素,形成字典看结果
print d1   #转换为字典
print str   #转换为字符串
print list(d0) #字典转换为列表,这里转换的值为键元素
print tuple(d0) #字典转换为元组,这里转换的值为键元素
print list(set0)#相当于list=list(set(list1)),把list1做了去重的处理
set([1, 2, 3, 4])
{1: 'c1', 2: 'c3', 3: 'c4', 4: 's'}
{1: 'a', 2: 'b'}
c1    c2    c3    c4    s    c
[1, 2, 3, 4]
(1, 2, 3, 4)
[1, 2, 3, 4]

 

展开阅读全文

没有更多推荐了,返回首页