仅访问列表中的最后一个元素与访问包含列表中最后一个元素的范围的区别

问题描述 投票:0回答:2

由于习惯使用 Matlab 语法,现在我正在使用 Python,所以这个示例令人困惑:

我有一个列表,我想访问它的最后一个元素,可以说

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

在Python中我必须做

list_a [-1] = 9
,而在Matlab中我会做
list_a(end)

所以在我看来Python中的

-1
表示最后一个元素,与Matlab中的
end
关键字相同。

然后我想访问列表中的最后 5 个元素,包括最后一个。

在 Matlab 中我会做

list_a (6:end)
。 Matlab 数组的第一个索引是 1,而不是像 Python 中的 0,这就是为什么我必须从索引 6 开始。

在我看来,执行

list_a[5:-1]
是合乎逻辑的,因为
-1
表示列表的最后一项,如上例所示。然而,这在Python中不起作用,因为返回的结果是
[5, 6, 7, 8]
所以要在Python中获取列表的最后一个元素,我必须执行
list_a[5:]
并留空

我不知道他们为什么决定这样做,但我想知道 Python 中是否有一些东西可以像 Matlab 中的 end 关键字一样用于列表索引和切片。谢谢你

python list matlab slice
2个回答
1
投票

对数组进行切片时,例如

list[x:y]
,不包括 y。 python 切片数组的方式是从
x
开始,到
y-1
结束。

现在,当你在切片列表时添加

None
关键字时,Python 会将其视为列表的末尾。例如,如果我执行
list[1:None]
,它将抓取索引 1 到最后一个索引。令人困惑,但这就是 python 的工作原理。

留空与

None
相同。因此,在您的示例中,
list_a[5:]
list_a[5:None]
相同。

对于你的问题,从技术上讲,你可以使用

None
作为 python 中的 END 关键字。


0
投票

创建最小的数字: 您有一个由数字组成的正数 n。您最多可以执行一项操作:选择数字中某个数字的索引,删除该索引处的该数字,然后将其插入到数字中的另一个数字或同一位置,以找到您可以获得的最小数字。

输入

输入将是一个字符串

输出

输出应该是一个包含 3 个元素的数字数组

你得到的最小的数字 你取的数字d的索引i,i尽可能小 插入数字 d 以获得最小数字的索引 j(尽可能小)。 例子

最小(261235) --> [126235, 2, 0]

说明 126235 是在索引 2 处取 1 并将其放在索引 0 处得到的最小数字

最小(209917) --> [29917, 0, 1] 或 ...

说明 [29917, 1, 0] [29917, 0, 1] 都可以是一个解,但由于 [29917, 1, 0] 中的索引

i
大于 索引
i
在 [29917, 0, 1] 中,解将是 [29917, 0, 1] 最小(1000000) --> [1, 0, 6] 0000001 是在索引 6 处取 0 并将其放在索引 0 处得到的最小数字

在下面的代码中修复它:

def 求解(输入 1): # TODO: 在这里实现函数逻辑

return output;
© www.soinside.com 2019 - 2024. All rights reserved.