|
发表于 2021-4-8 23:53:09
|
显示全部楼层
**1.列表推导式**
将列表中的每一个元素的值都变成原来的2倍
使用循环,利用下标索引更新每一个元素的值
>>> oho = [1, 2, 3, 4, 5]
>>> for i in range(len(oho)):
oho[i] = oho[i] * 2
>>> oho
[2, 4, 6, 8, 10]
使用列表推导式,能使代码更加简练
>>> oho = [1, 2, 3, 4, 5]
>>> oho = [i * 2 for i in oho]
>>> oho
[2, 4, 6, 8, 10]
[从程序的执行效率上来说,列表推导式的效率通常要比循环语句快上一倍左右的速度]
列表推导式的基本语法: [expression for target in iterable]
>>> x = [i for i in range(10)]
>>> x
[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
>>> x = [i + 1 for i in range(10)]
>>> x
[1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
用循环的方法
>>> x = []
>>> for i in range(10):
x.append(i+1)
用列表推导式处理字符串
>>> x
[1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
>>> y = [c * 2 for c in "FishC"]
>>> y
['FF', 'ii', 'ss', 'hh', 'CC']
将每一个字符都转换成对应的Unicode编码并保存为列表,需要使用内置函数ord
ord:将单个字符串转换为对应的编码
>>> code = [ord(c) for c in "FishC"]
>>> code
[70, 105, 115, 104, 67]
通过列表推导式将举证第二列的元素提取出来
>>> matrix = [[1, 2, 3],
[4, 5, 6],
[7, 8, 9]]
>>> co12 = [row[1] for row in matrix]
>>> co12
[2, 5, 8]
获取举证主对角线(左上角到右下角)上的元素
>>> diag = [matrix[i][i] for i in range(len(matrix))]
>>> diag
[1, 5, 9]
循环和列表推导式这两个写法的效果不完全一样;
循环是通过迭代来逐个修改原列表中的元素;
列表推导式则是直接创建一个新的列表,然后再赋值为原先的这个变量名。 |
|