鱼C论坛

 找回密码
 立即注册
查看: 15683|回复: 67

[知识点备忘] 第024讲:列表(VI)

[复制链接]
发表于 2020-7-30 06:03:33 | 显示全部楼层 |阅读模式
购买主题 已有 25 人购买  本主题需向作者支付 5 鱼币 才能浏览
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2020-7-30 09:37:17 | 显示全部楼层
沙发
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2021-4-4 11:49:17 | 显示全部楼层
>>> y = [matrix[i][-1-i] for i in range(len(matrix))]
对吗?
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 2 反对 0

使用道具 举报

发表于 2021-4-5 17:03:33 | 显示全部楼层
diag = [matrix[i][2-i] for i in range(len(matrix))]
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 6 反对 0

使用道具 举报

发表于 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]

循环和列表推导式这两个写法的效果不完全一样;
循环是通过迭代来逐个修改原列表中的元素;
列表推导式则是直接创建一个新的列表,然后再赋值为原先的这个变量名。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 12 反对 0

使用道具 举报

发表于 2021-5-17 15:25:19 | 显示全部楼层
zdasd 发表于 2021-4-8 23:53
**1.列表推导式**

将列表中的每一个元素的值都变成原来的2倍

复习了
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2021-5-25 18:50:43 | 显示全部楼层
y=[x[i][-i-1] for i in range(len(x))]
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2021-7-4 10:31:06 | 显示全部楼层
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2021-7-26 10:32:21 | 显示全部楼层
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2021-7-31 17:09:50 | 显示全部楼层
打卡
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2021-8-12 10:53:45 | 显示全部楼层
打卡024
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2021-8-13 08:16:39 | 显示全部楼层
已复习,谢谢
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2021-10-11 09:26:10 | 显示全部楼层
越到后面人越少
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2021-11-20 14:37:21 | 显示全部楼层
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2021-12-6 13:25:34 | 显示全部楼层
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2021-12-10 09:50:52 | 显示全部楼层
y=[x[i][2-i] for i in range(len(x))]
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2021-12-17 05:00:38 | 显示全部楼层
本帖最后由 是阿佳! 于 2021-12-17 06:53 编辑

1.range() 一般与索引连用,要对每一个元素*2用变量名

2.odr(str)将每一个字符转换成Unicode编码

3。
#获取一个矩阵的两条对角线

#初始化矩阵
matrix = [[1,2,3],
          [4,5,6],
          [7,8,9]]

#获取第一条对角线

#循环法
_diag = []

for i in range(len(matrix)):
    _diag.append(matrix[i][i])

print(_diag)

#列表推导式
diag =[matrix[i][i] for i in range(len(matrix))]

print(diag)


#获取第二条对角线

#循环法
diag_ = []
i = 0
a = len(matrix[i]) - 1

for i in range(len(matrix)):
    diag_.append(matrix[i][a])
    a -= 1

print(diag_)

#列表推导式法
diag__ = [matrix[i][-i-1] for i in range(len(matrix))]

print(diag__)
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 1 反对 0

使用道具 举报

发表于 2022-1-14 22:51:38 | 显示全部楼层
zhenzhou952 发表于 2021-4-5 17:03
diag = [matrix[2-i] for i in range(len(matrix))]

>>> matrix = [[1, 2, 3],
              [4, 5, 6],
              [7, 8, 9]]
>>> diag = [matrix[i][2-i] for i in range(len(matrix))]
>>> diag
[3, 5, 7]
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2022-1-14 22:53:34 | 显示全部楼层
zhenzhou952 发表于 2021-4-5 17:03
diag = [matrix[2-i] for i in range(len(matrix))]

# 测试结果如下
>>> matrix = [[1, 2, 3],
              [4, 5, 6],
              [7, 8, 9]]
>>> diag = [matrix[i][2-i] for i in range(len(matrix))]
>>> diag
[3, 5, 7]
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2022-2-26 22:06:02 | 显示全部楼层
反向时少减了一个1我直接裂开
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-12-22 09:33

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表