列表、元组、字典、集合

列表

列表类型是一个容器,它里面可以存放任意数量、任意类型的数据。列表是可变对象,有序

 

1、构造列表

(1)使用中括号[]  [1,2,3]

(2)使用list()构造方法  list(“abcd”)  list(range(0,4))

 列表推导式[x for x in “abcdef”]

 

2、其他操作见python序列操作

 

3、列表排序:sort()sorted()

  L.sort():是列表类型的方法,只适用于列表,对列表L直接原地排序.

  sortedL): 是内置函数,支持各种容器类型。返回排序后的新结果,需要赋值给变量才能保持排序结果。

 

元组

  元组和列表一样,都是容器形数据结构,并且都是序列。元组中的元素也是按照索引位置有序存放,所以可以进行索引取值、切片等操作,但是元组不可变

1、构造元组

  1)直接使用括号()包含元素

  2)使用元组的构造函数tuple()将数据转换成元组。

 

2、修改元组

  因为元组是不可变对象,所以没有直接方法修改元组,只能通过其它手段根据原始元组间接地构造新元组。

(1)可以考虑将元组转换成可变的列表,修改之后再转换回元组

 t = ('a','b','c','d')

 tmp = list(t)

 tmp[2] = "cc" 

 t = tuple(tmp)  

 

(2)通过解析的方式构造新元组

T = (1,2,3,4,5) 

tuple( i * 2 for i in T)

 

字典

字典(dict)是存储key/value数据的容器,存储的元素没有位置顺序,所以dict不是序列,不能通过索引的方式取元素。

python中,能hashable的数据类型都必须是不可变类型的,所以列表、集合、字典不能作为dict的key,字符串、数值、元组都可以作为dict的key(类的对象实例也可以,因为自定义类的对象默认是不可变的)。

1、构造字典

(1)使用大括号{}  D = {"key1": "value1", "key2": "value2", "key3": "value3"}

 

(2)使用dict()构造方法,dict()构造方法有三种

 方法一:

 temp = dict(name='xiaoming', age=18)

 方法二:

 temp = dict((('name', 'xiaoming'), ('age', 18)))

 方法三:dict() zip() 函数联合使用

 temp = dict(zip(['name', 'age'], ['xiaoming', 18]))

 

(3) 使用dict对象的fromkey()方法

    是dict的类方法,所以可直接通过dict类名来调用(当然,使用已存在的对象来调用也没有问题)。它构造的字典的key来自于给定的序列值来自于指定的第二个参数,如果没有第二个参数,则所有key的值默认为None。所以,第二个参数是构造新dict时的默认值。

 

(4) 使用dict对象的copy()方法

      dict的copy()方法会根据已有字典完全拷贝成一个新的字典副本。但需要注意的是,拷贝过程是浅拷贝。

 

2、增删改查

  get(key,default):检索dict中的元素,如果元素存在,返回对应的value,否则返回制定的default.

  len()查看字典有多少个元素

  set(key,default):检索并设置一个key/value,如果元素存在,直接返回对应的value,如果key不存在,则新插入这个Key并制定valuedefault。没有指定又不存在,则返回none

  update(key/value):根据给定的key/value更新已有的键,如果键不存在则新插入。

  Del D[key]可以用来根据key删除字典D中给定的元素,如果不存在则报错。

  clear():删除字典中所有的元素

  pop(key,default):移除给定分元素并返回移除的元素。如果元素不存在,则返回defalut

  popitem():用于移除并返回一个(key,value)元素对,每调用一次移除一个元素,没元素可移除后报错。在python3.7中保证以后进先出的顺序移除,在此之前不保证移除顺序。

 

3、迭代和dict视图

  keys():返回字典中所有的key组成的视图对象

  values():返回字典中所有的value组成的视图对象

  items():返回字典中所有(key,value)元组对组成的视图对象

  iter(d):返回字典中所有key组成的可迭代对象

 

4、字典的迭代和解析

 字典自身有迭代器,如果需要迭代key,不需要使用keys()来间接迭代。

 for key in d

 for key in d.keys()   等价

 

字典解析

d={k:v for (k,v) in zip(["one","two","three"],[1,2,3])}

>>> d

{'two': 2, 'one': 1, 'three': 3}

>>> d={x:x**2 for x in [1,2,3,4]}

>>> d

{1: 1, 2: 4, 3: 9, 4: 16}

d={x:None for x in "abcd"}

>>> d

{'b': None, 'd': None, 'a': None, 'c': None}

 

 

集合  

 集合set也是容器,其内元素都是无序、唯一、可变的。它常用来做成员测试,移除重复数据、数据计算(比如交集、并集、差集)。

 python提供了另一种不可变的集合类型frozenset

 s={‘a’,’b’,’c’}

  空的{}表示的字典,而不是集合,如果想要构造空集合,可以使用不带参数的set()来构造。

1、集合运算操作

  集合的运算有交集、并集、差集等操作。他们有两种方式:操作符版的和方法函数版的。符号版的都只能集合对集合,函数版的可以集合和其他比较,比如列表。

1交集&intersection()方法

      x & y {'e', 'd'}

      x.intersection(y)

 2)并集| union()方法

       x|y

       x.union(y)

3)差集 - difference()

      x-y

      x.difference(y)

4)取集合中非交集的部分

          x^y

 

 子集、真子集、超集

  # 子集 

  s1 <= s2

  s1.issubset(s2)

  s1.issubset(other_type)

  # 真子集

   s1 < s2

  # 超集

  s1 >= s2

  s1.issuperset(s2)

  s1.issuperset(other_type)

  # 真超集

  s1 > s2

 

2、集合基本操作

  s1.add(elem)添加元素到集合s1中。因为集合中的元素都唯一,所以添加已存在的元素不会有任何效果,但也不会报错。

  s1.remove(elem)移除集合s1中的元素。

  s1.pop()随机移除一个元素并返回这个元素。

  s1.clear()清空集合。

  s1.discard(elem)移除已存在的某个元素,如果不存在则无视(返回None)。

  s1.copy()拷贝(浅拷贝)集合s1。

  len(s1)返回集合s1长度。

  i in s1测试元素i是否在集合s1中

 

转载于:https://www.cnblogs.com/crystal1126/p/10470393.html

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值