Python的list/tuple、set/dict

list和tuple

详见http://www.runoob.com/python/python-lists.html
list和tuple是Python内置的有序集合,一个可变,一个不可变。根据需要来选择使用

list列表
  • 简介
    • 列表是python内置的一种数据类型
    • 可以随时添加和删除其中的元素
    • list是可变的有序表
    • list的元素可以为不同数据类型
    • list可以嵌套list,相当于多维数组
    • 使用[]标识
  • 使用索引访问list中的数据(索引从0开始)
    • classname[2] 取出classname中的第三个数据
    • 索引超出list长度时报IndexError错误
    • 可以倒序取数据
      classname[-2] 取出倒数第二个数据
    • 取出list内嵌套list的数据
      classname[1][3]
  • 向list末尾追加元素 append()
    classname.append(‘xiaoming’)
  • 插入元素到指定位置 insert(位置,内容)
    classname.insert(3,‘jack’)
  • 删除list末尾元素 pop()
    classname.pop()
  • 删除指定位置的元素 pop(位置)
    classname.pop(2)
  • 把某个元素替换成别的元素,可以直接赋值给对应的索引位置
    classname[2] = ‘wang’
  • 存在空list,长度为0
  • 两个list相加,可以使用+号
    list1 = [1,2,3]
    list2 = [a,b,c]
    list3 = list1 + list2 = [1,2,3,a,b,c]
  • reverse(),翻转列表,赋值给自身
  • 使用join()将一个list追加到另一个list上
    list1 = [‘1’,‘2’,‘3’]
    list2 = [‘a’,‘b’,‘c’]
    list1.join(list2) = ‘1’,‘2’,‘3’,‘a’,‘b’,‘c’ #如果list没有引号(非string类型),报错
    • 也可这样使用
      s1 = ‘,’.join(str(n) for n in L) # 用逗号连接list的元素(手动变成string)
    • 连接的列表或元组中元素的类型必须全部为string类型
  • 使用extend()追加多个值到另一个list上
    list1.extend([a,b,c])
    list1 = [1,2,3,a,b,c]
  • 使用*号,可以重复输出
    print list1 * 2 # [1,2,3] [1,2,3]
  • 返回最大值和最小值
    max(list) min(list)
  • 比较两个字符串
    cmp(list1,list2)
    比较两个list
    返回1,-1,0
    根据顺序依次比较,前面元素相同,则比较下一个
  • list.count(obj)统计某个元素在列表中出现的次数
    返回出现的字符串串个数
  • list.find(obj) 从list查找子字符串
    返回出现的索引位置
    找不到返回-1
tuple元组
  • 简介
    与list类似
    是不可变的有序表,不能二次赋值,相当于只读列表
    一经初始化就不能再改变,比较安全
    使用()标识
  • 只有一个元素的元组
    只有一个元素也需要加逗号,不然默认为数学计算意义上的括号
  • 可变tuple
    当tuple内嵌套list时,改变list的值可以间接改变tuple

dict和set

详见http://www.runoob.com/python/python-dictionary.html

dict字典
  • 简介
    • dict全称dictionary叫做字典,是python内置的
    • 其他语言也称为map
    • 使用键值对(key-value)存储
    • 具有极快的查找速度
    • 通过{}标识
      d = {key:value,…}
    • dict内部存放的顺序和可以的放入顺序没有关系
  • 把数据放入字典,除了初始化时指定外,还可以通过key存取
    d[‘ni’] = 100
    dict[key] = value
  • 一个key只能对应一个value,对同一个key重复放入会覆盖掉以前的value
  • 避免key不存在的方法
    • 通过in判断
      ‘key’ in 字典
      返回True或Flase
    • 通过get()方法
      字典.get(‘key’) 不存在返回none(python交互模式不展示)
      字典.get(‘key’,-1) 不存在返回-1(可以指定返回值)
  • 删除key用pop(key)方法
    • 删除key,对应的value也会被删除
  • dict和list的区别
    • dict特点
      dict的查找和插入速度快,不会随着key的增加而变慢
      dict需要占用大量的内层,内存浪费多
    • list特点
      list查找和插入的时间随着元素的增加而增加
      list占用空间小,浪费内存很少
    • 所以dict是用空间换取时间的一种方法
  • dict内部的key必须是不可变对象
    • 因为dict是根据key计算value的存储位置(哈希算法计算),如果每次计算相同的key得到的结果不同,那dict内部就混乱了。
    • python中的字符串、整数等都是不可变的可以正常使用dict
      但是list可变,不能作为key(可以使用tuple元祖)
set组
  • 简介
    和dict类似,也是一组key的集合
    但是不存储value
    由于key不能重复,所以在set中,没有重复的key,重复元素会被过滤掉
    set不是有序的
  • 要创建一个set,需要提供一个list作为输入集合
    s = set([…])
  • 通过add(key)方法可以添加元素到set中,可以重复添加,但不会有效果
  • 通过remove(key)方法可以删除元素
  • set可以看成数学意义上的无序和无重复元素的集合,可以做交并集处理
    >>> s1 = set([1, 2, 3])
    >>> s2 = set([2, 3, 4])
    >>> s1 & s2
    {2, 3}
    >>> s1 | s2
    {1, 2, 3, 4}
  • dict和set的唯一区别在于set没有存储对应的value,但原理相同,所以,同样不可以放入可变对象,因为无法判断两个可变对象是否相等,所以无法保证set内部‘不会有重复元素’
  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值