|
马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册
x
本帖最后由 一阵三十六 于 2021-9-7 22:53 编辑
要求是:
- 请将下面 matrix 矩阵反向展开,即使得最终的结果为 [9, 8, 7, 6, 5, 4, 3, 2, 1]。
- matrix = [[1, 2, 3],
- [4, 5, 6],
- [7, 8, 9]]
复制代码
给的参考答案是:
- >>> flatten = [col for row in matrix for col in row][::-1]
- >>> flatten
- [9, 8, 7, 6, 5, 4, 3, 2, 1]
复制代码
然后我试着用 for循环 套一下这个答案。
为什么这两个得到的结果不一样呢?
而且按我自己不成熟的理解我认为也是循环的那个结果。
希望大佬讲一下这个答案的逻辑和我思考方式的误区。
本帖最后由 傻眼貓咪 于 2021-9-5 20:09 编辑
思路相同,只是參考答案是先取值後排序,如:
步驟 1:
取得所有值 [1, 2, 3, 4, 5, 6, 7, 8, 9]
步驟 2:
再倒過來 [9, 8, 7, 6, 5, 4, 3, 2, 1]
- # 注:[::-1] 就是前後對調,如:[1, 2, 3, 4][::-1] -> [4, 3, 2, 1]
复制代码
而我是先排序後取值
[::] 這是很好用的操作符
不單只是用在列表,所有只要能索引訪問的表,都能用這個符,如下:
能用:列表(list),元組(tuple),字符串(string)
不能用:集合(set),字典(dictionary)
含義與用法,如下:
[::] = [開始 : 結束 : 自定訪問方式]
開始:表示第一個被訪問的值的索引(index)位置,默認為 0
結束:表示最後一個被訪問的值的索引(index)位置,默認為最後一個位置+1(注:不包括結束位置本身)
自定訪問方式:正整數為從前面開始訪問,負整數為從後面開始訪問,數字表示下一個位置是現在的位置後面第幾位,默認為 1,如:[1, 2, 3, 4, 5, 6][::2] = [1, 3, 5](注:1 後第二位是 3,3後第二位是5)
|
|