博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
day06数据类型----元组、字典、集合
阅读量:4580 次
发布时间:2019-06-09

本文共 4989 字,大约阅读时间需要 16 分钟。

一、元组(tuple):

            python中将一些不能修改的值称为不可变的,而不可变的列表则被称之为元组。

         注意元组一旦被定义则不可修改,因此一般我们不定义空元组。

         元组是有序的,可存放多个数据|,不可变类型(但是如果元组中包含可变对象时,

            可变对 象时依旧可变的。)

         应用场景:是将不允许操作的列表可以转化为元组,将允许操作的元组转化为列表。

1.1、如何定义一个只有一个值得元组

# 如何定义一个只有一个元素的元组print(('qzk',))  # ('qzk',)print(tuple(['qzk2']))  # ('qzk2',)

1.2、索引取值

# 索引取值t = (1, 2, 3, 2, 2, 1, 2, 3, 4, 3, 2)print(t[0])  # 1print(t[-1])  # 2

1.3、切片

t = (1, 2, 3, 2, 2, 1, 2, 3, 4, 3, 2)# 切片print(id(t))  #31674984new_t1 = t[:-1:]  # (1, 2, 3, 2, 2, 1, 2, 3, 4, 3) 是从0位取到倒数第二位,(-1)位不考虑(顾头不顾尾)new_t2 = t[-6:-1:1]  # (1, 2, 3, 4, 3)new_t3 = t[-6:-1:-1]  # ()new_t4 = t[-1:-6:1]  # ()new_t5 = t[-1:-6:-1]  # (2, 3, 4, 3, 2)print(new_t1)print(new_t2)print(new_t3)print(new_t4)print(new_t5)print(id(new_t1))  # 31531976

1.4、长度运算(len()):实际求取的是items的个数

 

# 长度运算(len())t = (1, 2, 3, 2, 2, 1, 2, 3, 4, 3, 2)print(len(t))  # 11

1.5、内置方法:主要与两个 .count()、.index()

  .count() 返回的是value的次数

  .index(self, value, start=None, stop=None) ,返回的是第一个索引到值的位置。

def count(self, value): # real signature unknown; restored from __doc__        """ T.count(value) -> integer -- return number of occurrences of value """        return 0    def index(self, value, start=None, stop=None): # real signature unknown; restored from __doc__        """        T.index(value, [start, [stop]]) -> integer -- return first index of value.        Raises ValueError if the value is not present.        """        return 0
# 元组内置方法t = (1, 2, 3, 2, 2, 1, 2, 3, 4, 3, 2)print(t.count(3))  # 该数据集合可以存放相同数据  # 3print(t.index(2, 2, 4))  # 3

二、字典(dict) :

          字典是python中仅存的mapping类型。

          字典是无序的,可变类型,可存放多个数据,是通过键值对(key:value)来取值的

            字典的key 可以为所有不可变类型:int float tuple str bool 等。

          value 可以为所有可变类型

         在字典中key 具有唯一性(重复会覆盖旧值),value可以重复。

2.1、声明字典的方式:

d1 = {
'name': 'qzk', 'age': 18}print(d1)d2 = dict({
'name': 'qzk', 'age': 18})print(d2)d3 = dict(name='egon', age=18)print(d3)

2.2、增删改查

# 增加dic = {}dic['name'] = 'qzk'dic['age'] = 18print(dic)# 改dic['name'] = 'qzk1'print(dic)# 查print(dic['age'])# 删除del dic['name']print(dic)# {'name': 'qzk', 'age': 18}# {'name': 'qzk1', 'age': 18}# 18# {'age': 18}

2.3、内置方法

 

# .get() 取值,相当于查询作用dic12 = {
'a': 10, 'b': 20}# print(dic['c']) # KeyErrorres = dic12.get('c') # 拥有默认值,None。可以避免错误print(res)res = dic12.get('d', 'key不存在') # 默认值是None,可以自定义默认值print(res)# 增:.update()dic12.update({
'a': 100, 'c': 300})print(dic12) # 添加的参数字典,与dic重复就是更新字典,新的key就是新增字典# 删:.pop()res = dic12.pop('c') # 根据key删除指定对象,并返回删除的对象print(res)# 复制:(浅拷贝|深拷贝)d1 = {
'list': [1, 2]}d2 = d1.copy()print(id(d1), id(d1['list']))print(id(d2), id(d2['list']))d1['list'].append('abc')print(d2)# 如何定义一个空字典;dic11 = {}.fromkeys(['a', 'b', 'c']) # {'a': None, 'b': None, 'c': None}print(dic11)dic13 = {}.fromkeys(['a', 'b', 'c'], [1, 2, 3]) # {'a': [1, 2, 3], 'b': [1, 2, 3], 'c': [1, 2, 3]}print(dic13)# setdefault(key,value)# 语法:dict.setdefault(key, default=None)# python 字典 setdefault() 函数和get() 方法类似, 如果键不存在于字典中,将会添加键并将值设为默认值。# 返回值:如果 key 在 字典中,返回对应的值。如果不在字典中,则插入 key 及设置的默认值 default,并返回 default ,default 默认值为 None。dic13.setdefault('teas', [])dic13['teas'].append('egon')dic13['teas'].append('qzk')print(dic13)# None# key不存在# {'a': 100, 'b': 20, 'c': 300}# 300# 34734368 34757192# 41813552 34757192# {'list': [1, 2, 'abc']}# {'a': None, 'b': None, 'c': None}# {'a': [1, 2, 3], 'b': [1, 2, 3], 'c': [1, 2, 3]}# {'a': [1, 2, 3], 'b': [1, 2, 3], 'c': [1, 2, 3], 'teas': ['egon', 'qzk']}

三、集合(set):

  定义与声明:

      集合分为单列数据集合和双列数据集合

      集合是无序存储,无key 无索引,无法取值

      集合是可变数据类型,内部可以存放任意数据类型的数据,且具有唯一性****

  常用操作:

s1 = set()s2 = set('ABC')print(s1, type(s1))print(s2, type(s2))# set() 
# {'C', 'A', 'B'}

       交集、并集、差集、对称差集运算

p_set = {
'a', 'b', 'c', 'd'}l_set = {
'x', 'y', 'z', 'a', 'b'}# 交集&res = p_set & l_setprint(res)res = p_set.intersection(l_set)print(res)# {'a', 'b'}# {'a', 'b'}# 并集res = p_set | l_setprint(res)res = p_set.union(l_set)print(res)# {'b', 'z', 'd', 'y', 'c', 'x', 'a'}# {'b', 'z', 'd', 'y', 'c', 'x', 'a'}# 差集res = p_set - l_setprint(res)res = p_set.difference(l_set)print(res)res = l_set.difference(p_set)print(res)# {'d', 'c'}# {'d', 'c'}# {'z', 'y', 'x'}# 对称差集res = p_set ^ l_setprint(res)res = p_set.symmetric_difference(l_set)print(res)print(p_set)print(l_set)# {'z', 'd', 'y', 'c', 'x'}# {'z', 'd', 'y', 'c', 'x'}# {'a', 'd', 'c', 'b'}# 如上一些操作带——update的 是作用结果赋值给调用者
# 添加删除操作s = set()s.add('abc')s.add('xyz')print(s)if 'xyz' in s:    s.remove('xyz')  # 有element 删除,无ele 抛异常res = s.pop()  # 随机删除一个
class_map = [    ('owen', 'python'),    ('egon', 'linux'),    ('egon', 'python'),    ('liu', 'java'),    ('liu', 'linux')]## 需求:# 1多少人参加选课:['owen','egon','liu']names = []for name, _ in class_map:    # 判断列表中是否已存在,不存在才添加    if name not in names:        names.append(name)print(names)classes = set()for _, cless in class_map:    classes.add(cless)    classes = list(classes)    print(classes)# ['owen', 'egon', 'liu']# ['python']

 

转载于:https://www.cnblogs.com/qianzhengkai/p/10600810.html

你可能感兴趣的文章