(三)python语法之序列

前面一节说明了python序列中的列表,现在来说一下python序列中的其他数据类别,元组、字典和集合。其中字典和集合都是无序序列。

元组

元祖的创建与删除

元组的创建很简单,直接赋值()就可以了,但是,需要注意一些细节,当创建的元组只有一个元素的时候,需要在这个元素后面加上一个逗号.x=(1,)元组的删除比较特别一点,由于元组属于不可变序列,所以,删除只能使用del删除整个元组序列。

元组与列表的区别

python的内置函数tuple()可以接受一个可迭代对象,将可迭代对象转换成包含同样元素的元组,二list()函数则是将可迭代序列转换成列表。从效果上来看,tuple()函数可以看作是在冻结列表而使其不可改变,而list()函数,则是在融化元组使得其可变。
在访问速度方面,对元组的访问和处理速度更快。

序列解包

解包由要求,即变量与序列中的元素数量一样

>>> x,y,z=(1,2,3)
>>> x
1
>>> y
2
>>> z
3

可以看出就是将一个元组解开。当然这个特性也可以用作列表和字典。但是用作字典时需要说明是对键,值还是键值对解包

>>> x,y,z={"a":1,"b":2,"c":3}.items()
>>> x,y,z
(('a', 1), ('b', 2), ('c', 3))
>>> x,y,z={"a":1,"b":2,"c":3}.values()
>>> x,y,z
(1, 2, 3)
>>> x,y,z={"a":1,"b":2,"c":3}.keys()
>>> x,y,z
('a', 'b', 'c')

字典

字典是键值对的无序列表,字典中,值是允许重复的,而键是不允许重复的。

字典的创建与删除

字典的创建一般采用两种方式

  • 直接赋值,adict={}
  • 采用内置函数dict()
>>>dict()                        # 创建空字典
>>> dict(a='a', b='b', t='t')     # 传入关键字
{'a': 'a', 'b': 'b', 't': 't'}
>>> dict(zip(['one', 'two', 'three'], [1, 2, 3]))   # 映射函数方式来构造字典
{'three': 3, 'two': 2, 'one': 1} 
>>> dict([('one', 1), ('two', 2), ('three', 3)])    # 可迭代对象方式来构造字典
{'three': 3, 'two': 2, 'one': 1}
>>>dict.fromkeys(list)  # 创建值为空的字典

字典元素的读取

字典元素的读取,一般有两种方式,

  • 使用下标读取,如adict[key]。但是这种方式有一个不好的地方就是如果key在字典中不存在的话,就会报错;
  • 使用内置方法读取,get;如:adict.get(key)。这个有一个好处,就是如果key不存在与字典中,那么会返回None。从而保持了代码的健壮性;
  • 遍历读取字典中的键和值,这个就是需要采用迭代遍历的方式,去读取:
    • 遍历字典的键,使用adict.keys(),会将字典中的键,以列表的方式全部返回;
    • 遍历字典的值,使用adict.values(),会将字典中的值,以列表的方式全部返回;
    • 遍历字典的键,使用adict.items(),会将字典中的键和值,以二元元组的方式全部返回;

字典元素的添加和修改

字典元素的添加,一般有两种方式,

  • 使用下标添加,如adict[key]=Value。
  • 使用内置方法读取,updata;如:adict.updata(key)=Value。

字典元素的修改与字典元素的添加基本相同,也是两种方式:

  • 使用下标修改,如adict[key]=Value。
  • 使用内置方法修改,updata;如:adict.updata(key)=Value。

字典元素的典型运用

字典元素可以用来统计字符的出现频率。

>>> import string
>>> import random
>>> x=string.ascii_letters+string.digits+string.punctuation
>>> x
'abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789!"#$%&\'()*+,-./:;<=>?@[\\]^_`{|}~'
>>> y=[random.choice(x) for i in range(1000)]
>>> z=' '.join(y)
>>> d=dict()
>>> for ch in z:
...     d[ch] = d.get(ch,0) + 1
>>> d
{'j': 9, ' ': 999, 'y': 11, 'H': 11, 'T': 14, 'l': 10, '7': 11, '=': 12, 'g': 10, '-': 10, '_': 12, '!': 13, 'Z': 17, 'x': 14, 'U': 15, '+': 11, 'u': 12, '\\': 8, 'i': 10, 'Y': 8, 'n': 10, '2': 13, 'D': 9, '^': 9, ']': 9, 'p': 7, '*': 15, 'r': 15, 'L': 10, '&': 9, 'h': 11, 'c': 12, 'w': 5, '5': 13, "'": 8, 'd': 14, 'b': 9, 'o': 9, ';': 10, 'k': 12, 'a': 19, 'R': 12, 'G': 14, '6': 8, 'W': 5, '~': 9, '[': 8, 'e': 12, '(': 6, 's': 13, '{': 6, '0': 14, '.': 12, '}': 16, '1': 6, '3': 11, 'X': 9, 'B': 10, 'I': 10, 'E': 15, '"': 9, 'A': 6, 'O': 10, 'V': 9, 'v': 9, 'N': 8, 'J': 10, '$': 11, 'P': 12, '%': 10, '`': 9, 'S': 9, ',': 11, '?': 6, '8': 11, '9': 12, ')': 16, 'q': 14, '/': 9, '@': 15, 'M': 11, 'C': 13, 'm': 16, 'K': 10, 'F': 9, 'z': 7, 'Q': 11, '|': 5, 'f': 9, '4': 10, 't': 15, ':': 8, '#': 9, '>': 7, '<': 12}

集合

集合与字典一样是属于无序可变序列,与字典一样,都是用大括号,作为标志。同一个集合中的元素之间,具有不可重复性。

集合的创建与删除

集合的创建有两种方式

  • 直接赋值,aset={1,2,3}
  • 采用内置函数set()
    集合的删除的话,就是与列表一样,采用del与remove和clear。但是不一样的地方也有,比如pop(),但是pop(),里面不能放入参数。集合元素的增加比较简单,只是采用了add(),即可。

序列生成器

像列表有列表生成器,那么肯定也有元组生成器,字典生成器和集合生成器。下面来展示一下几个例子。
元组生成器

>>> g=((i * 2)**2 for i in range(10))
>>> g
<generator object <genexpr> at 0x00000225D45984C0>
>>> tuple(g)
(0, 4, 16, 36, 64, 100, 144, 196, 256, 324)
>>> tuple(g)
()

字典生成器

>>> {i:str(i) for i in range(1,6)}
{1: '1', 2: '2', 3: '3', 4: '4', 5: '5'}
>>> x=['a','b','c','d']
>>> y=['A','B','C','D']
>>> {i:j for i,j in zip(x,y)}
{'a': 'A', 'b': 'B', 'c': 'C', 'd': 'D'}

集合生成器

>>> {x.strip() for x in ("he","she ","I ")}
{'she', 'I', 'he'}
>>> import random
>>> x={random.randint(1,500) for i in range(100)}
>>> len(x)
87

猜你喜欢

转载自blog.csdn.net/qq_41861526/article/details/82890719
今日推荐