python - 列表索引混乱
问题描述
我知道python列表从0到n的值开始它的索引。所以就像列表 l 的第一个元素是 l[0] 等等。
想想这是非常微不足道的。然而,当事情变得混乱和复杂时,我发现自己很难找到正确的索引。由于这个事实,每次我想访问一个元素时,我都必须将长度补偿 +/- 1。
这看起来像一个简单的问题。但事实并非如此。有系统的方法可以解决这个问题吗?有没有办法从不同的角度看待这个问题?
解决方案
当我向新手程序员教授元素索引的概念时,我使用的一个比喻是考虑尺子中的索引和数字。列表中的内容(或数组、向量、字符串等),作为放置在此标尺上的物理对象 - 比如说鹅卵石或任何东西。您将对象放在数字之间 - 而不是在它们的中间。所以第一个卵石位于 0 和 1 标记之间的空间中。第二个是1和2之间的空间。最后一个将在29和30标记之间的空间上,即使尺子是30厘米长——在30之后,规则就结束了,不能再有其他元素了放置。
这不仅有助于可视化元素如何从索引 0 开始,而且还有助于使用 Python 切片表示法,其中切片的末尾表示最多可以选择元素(而不是要选择的最后一个元素)。
因此,在列表中, lst[0:1] 将选择 0 和 1 标记之间的所有元素, lst[0:28] 将选择这些数字之间的元素,以及 [28:30] 之间的最后两个元素被排除在外。
(在不相关的说明中,我希望您实际上不要将l
其用作变量名 - 一个字母的变量名通常不是一个好习惯,以良好的感觉为准,但l
具体很难区分1
,所以它使代码更难阅读)
推荐阅读
- c# - 当同时撰写多封电子邮件时,Outlook 不会触发 AttachmentAdd 事件,但一封电子邮件除外
- json - 如何在 json 文件中使用变量?
- react-native - React Native webview with login facebook总是在发布模式下重定向到另一个url(仅限android)
- amazon-web-services - 如何从 AWS VPC 中的私有子网连接到 Internet?
- python - 如何在数据框列 pandas 中找到最接近所选数字的 5 个数字的索引?
- facebook-graph-api - DailogFlow 将线程控制传递给 Facebook Messenger
- windows - Magento 2.3.0 file_get_contents() 问题:权限被拒绝
- python - 如何使用python将此HTML文件转换为PDF
- python - 在 Codepipeline 中调用 Lambda,输入工件是来自 Github 的源文件
- google-admin-sdk - 如何使用 groupid 在组中获取用户名?