进阶Python中的列表,元组,集合,字典!

版权声明:未经博主允许不得转载。 https://blog.csdn.net/qq_43774897/article/details/88914478

一.列表的其他特性

list.append(x)
在列表的末尾添加一个元素。相当于 a[len(a):] = [x] 。

list.extend(iterable)
使用可迭代对象中的所有元素来扩展列表。相当于 a[len(a):] = iterable 。

list.insert(i, x)
在给定的位置插入一个元素。第一个参数是要插入的元素的索引,所以 a.insert(0, x) 插入列表头部, a.insert(len(a), x) 等同于 a.append(x) 。

list.remove(x)
移除列表中第一个值为 x 的元素。如果没有这样的元素,则抛出 ValueError 异常。

list.pop([i])
删除列表中给定位置的元素并返回这个元素。如果没有给定位置,a.pop() 将会删除并返回列表中的最后一个元素。

list.clear()
删除列表中所有的元素。相当于 del a[:] 。

list.index(x[, start[, end]])
返回列表中第一个值为 x 的元素的从零开始的索引。如果没有这样的元素将会抛出 ValueError 异常。

list.count(x)
返回元素 x 在列表中出现的次数。

list.sort(key=None, reverse=False)
对列表中的元素进行排序

list.reverse()
反转列表中的元素。

list.copy()
返回列表的一个浅拷贝。相当于 a[:] 。

二.列表推导式

列表推导式的结构是由一对方括号所包含的以下内容:一个表达式,后面跟一个 for 子句,然后是零个或多个 for 或 if 子句。 其结果将是一个新列表,由对表达式依据后面的 for 和 if 子句的内容进行求值计算而得出。
假设我们想创建一个数字平方列表有三种方法:

第一种:
squares = []
for x in range(10):
    squares.append(x**2)
print(squares)

第二种:
squares = list(map(lambda x: x**2, range(10)))

第三种:  **更加简洁易读。**
squares = [x**2 for x in range(10)]

以下列表推导式会将两个列表中不相等的元素组合起来:

[(x,y) for x in range(5) for y in range(5) if x != y]

上面 等价于

a_list = []
for x in range(5):
     for y in range(5):
          if x != y:
               a_list.append((x,y))

在上面两个代码片段中, for 和 if 的顺序是相同的。如果表达式是一个元组(例如上面的 (x, y)),那么就必须加上括号。
列表可以进行运算
在这里插入图片描述
列表也可以进行字符串操作
在这里插入图片描述
处理元组
在这里插入图片描述
嵌套列表
在这里插入图片描述

三.del 语句

有一种方式可以从列表按照给定的索引而不是值来移除一个元素: 那就是 del 语句。 它不同于会返回一个值的 pop() 方法。 del 语句也可以用来从列表中移除切片或者清空整个列表。

>>> a = [-1, 1, 66.25, 333, 333, 1234.5]
>>> del a[0]
>>> a
[1, 66.25, 333, 333, 1234.5]
>>> del a[2:4]
>>> a
[1, 66.25, 1234.5]
>>> del a[:]
>>> a
[]

四.集合

Python也包含有 集合 类型。集合是由不重复元素组成的无序的集。它的基本用法包括成员检测和消除重复元素。集合对象也支持像 联合,交集,差集,对称差分等数学运算。花括号或 set() 函数可以用来创建集合。注意:要创建一个空集合你只能用 set() 而不能用 {},因为后者是创建一个空字典.

>>> a = set('abracadabra')
>>> b = set('alacazam')
>>> a                                  # a中的唯一值
{'a', 'r', 'b', 'c', 'd'}
>>> a - b                              # a和b求差
{'r', 'd', 'b'}
>>> a | b                              # a和b求并
{'a', 'c', 'r', 'd', 'b', 'm', 'z', 'l'}
>>> a & b                              # a和b求交
{'a', 'c'}
>>> a ^ b                              # a和b求非交
{'r', 'd', 'b', 'm', 'z', 'l'}
>>> a = {x for x in 'abracadabra' if x not in 'abc'}      # 字典推导式
>>> a
{'r', 'd'}

五.字典

>>> tel = {'jack': 4098, 'sape': 4139}
>>> tel['guido'] = 4127
>>> tel
{'jack': 4098, 'sape': 4139, 'guido': 4127}
>>> tel['jack']
4098
>>> del tel['sape']
>>> tel['irv'] = 4127
>>> tel
{'jack': 4098, 'guido': 4127, 'irv': 4127}
>>> list(tel)
['jack', 'guido', 'irv']
>>> sorted(tel)
['guido', 'irv', 'jack']
>>> 'guido' in tel
True
>>> 'jack' not in tel
False

dict() 构造函数可以直接从键值对序列里创建字典。

>>> dict([('sape', 4139), ('guido', 4127), ('jack', 4098)])
{'sape': 4139, 'guido': 4127, 'jack': 4098}

字典推导式可以从任意的键值表达式中创建字典

>>> {x: x**2 for x in (2, 4, 6)}
{2: 4, 4: 16, 6: 36}

当关键字是简单字符串时,有时直接通过关键字参数来指定键值对更方便

>>> dict(sape=4139, guido=4127, jack=4098)
{'sape': 4139, 'guido': 4127, 'jack': 4098}

六.循环的技巧

当在字典中循环时,用 items() 方法可将关键字和对应的值同时取出

>>> knights = {'gallahad': 'the pure', 'robin': 'the brave'}
>>> for k, v in knights.items():
...     print(k, v)
...
gallahad the pure
robin the brave

当同时在两个或更多序列中循环时,可以用zip() 函数将其内元素一一匹配。

>>> questions = ['name', 'quest', 'favorite color']
>>> answers = ['lancelot', 'the holy grail', 'blue']
>>> for q, a in zip(questions, answers):
...     print('What is your {0}?  It is {1}.'.format(q, a))   # format() 函数的用法
...
What is your name?  It is lancelot.
What is your quest?  It is the holy grail.
What is your favorite color?  It is blue.

可以很方便的用这个函数来创建一个字典,下面举个例子:

 questions = ['name', 'quest', 'favorite color','lancelot', \
             'the holy grail', 'blue']

{k:v for k,v in zip(questions,range(len(questions)))}

在这里插入图片描述

当逆向循环一个序列时,先正向定位序列,然后调用 reversed() 函数

>>> for i in reversed(range(1, 10, 2)):
...     print(i)
...
9
7
5
3
1

如果要按某个指定顺序循环一个序列,可以用 sorted() 函数 ,它可以在不改动原序列的基础上返回一个新的排好序的序列

>>> basket = ['apple', 'orange', 'apple', 'pear', 'orange', 'banana']
>>> for f in sorted(set(basket)):
...     print(f)
...
apple
banana
orange
pear

当在序列中循环时,用 enumerate() 函数可以将索引位置和其对应的值同时取出

>>> for i, v in enumerate(['tic', 'tac', 'toe']):
...     print(i, v)
...
0 tic
1 tac
2 toe

有时可能会想在循环时修改列表内容,一般来说改为创建一个新列表是比较简单且安全的。

>>> import math
>>> raw_data = [56.2, float('NaN'), 51.7, 55.3, 52.5, float('NaN'), 47.8]
>>> filtered_data = []
>>> for value in raw_data:
...     if not math.isnan(value):
...         filtered_data.append(value)
...
>>> filtered_data
[56.2, 51.7, 55.3, 52.5, 47.8]

最后几个代码结果感受下列表,字典,集合
在这里插入图片描述

学习链接

猜你喜欢

转载自blog.csdn.net/qq_43774897/article/details/88914478