13列表的其他操作

1.二维列表
以下是一个名为list1的列表:

list1 = [[1, 2, 3],[4, 5, 6],[7, 8, 9]]

当我们利用换行,把各个元素分开并上下对齐,变成一个临时的表格:

list1 = [
  [1, 2, 3],
  [4, 5, 6],
  [7, 8, 9]
]

他们都是同一个列表,如果我们要获取列表中的第二个元素,也就是表格中的第二行,可以用索引 list1[1] 表示。索引结果仍然是一个列表,我们可以对它继续索引,找出其中第三个元素:

list1 = [
  [1, 2, 3],
  [4, 5, 6],
  [7, 8, 9]
]
# 找出 list1 中第二个元素
print(list1[1])
# 输出 [4, 5, 6]

# 找出 list1 中,第二个元素的第三个元素
print(list1[1][2])
# 输出:6

这就相当于,我们通过两步索引,找出了这个表格中位于第 2 行第 3 列的元素。那就表示我们要取某行某列的元素,那通用格式就是 列表[行数-1][列数-1]。

由于这种列表有了“行”和“列”,支持两步索引,所以我们把这样的结构称为 二维列表。


2.range() 函数
range() 函数能快速生成一个有规律的数字序列。该函数的语法格式为 range(start, stop, step),返回一个 range 对象,要用 list() 函数转换成列表。
range(start, stop, step)
start:表示计数从start开始,不填写的时候,默认从0开始
stop:计数到stop结束,但是不包含stop
step:计数的间隔,不填时默认为1

提示:如果你已经设好了 stop 参数和 step 参数的值,那 start 参数也必须填写!

# start 为 2, stop 为 5,间隔默认为 1
list1 = list(range(2, 5))
print(list1)
# 输出:[2, 3, 4]

# start 为 1, stop 为 9,间隔为 2
list2 = list(range(1, 9, 2))
print(list2)
# 输出:[1, 3, 5, 7]

# start 为默认值 0, stop 为 3,间隔默认为 1
list3 = list(range(3))
print(list3)
# 输出:[0, 1, 2]

#range() 的取值逻辑,和列表的切片是一样的, 选取范围包括起始位置,却不包括结束位置。这也是和我们之前说的切片设计逻辑是一样的道理,方便我们快速看出范围的元素数目。

3.列表需要注意的一些问题

scores = [66, 86, 58, 92, 70, 85, 99]
scores1 = scores.sort()
scores1 = scores1.reverse()
print(scores1)
# 报错:AttributeError: 'NoneType' object has no attribute 'reverse' in line 3.
#(属性错误:第三行中,NoneType 对象没有 reverse 属性。)

第二行代码中,scores1 =scores.sort(),而不是我们之前写的scores.sort()。

第三行写的是 scores1 = scores1.reverse(),也不是我们写的scores.reverse().

这样写是错误的,因为 sort() 和 reverse() 方法只是对原来的列表进行操作,不会生成新的列表,所以它们是没有返回值的,或者说,返回的是 None。因此,第二行中,scores1 赋到的值是 None,再对 None 调用 reverse() 方法当然会出错。



name_class = ['李白','王维','杜甫','王之涣','王安石'] 
print(name_class[5])
# 报错:IndexError: list index out of range
# (索引错误:超出列表范围)

IndexError 指的是索引出了错。列表的索引是从 0 开始的,5 个人的列表,最后一个索引是4。索引 5 就是第 6 个元素,就超出范围了。
要查找列表的最后一个元素,索引是列表中元素的个数减 1(或者用反向索引,直接用 -1 即可)

  • 5
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值