【问题标题】:Learning about arrays: index starting with 0学习数组:从 0 开始的索引
【发布时间】:2016-12-07 05:13:21
【问题描述】:

我使用的是 Python 2.7,几天前开始学习 Python。我仍在尝试了解 Python 如何索引数组。数组从零而不是一开始。我正在练习操纵数组,可以使用一些帮助。

我有 2 个数组 - A 和 B - 我想获得与 A 中的值平行的 B 中的值。

下面是我用来帮助我精通数组的代码:

 A = [2, 8, 29, 34, 54, 61, 73, 89, 97, 101]

 B = [201, 309, 454, 540, 602, 750, 889, 973, 1003, 1120]


 B[2] = 454

 # B[2] = 201  this is what I want

 B[8] = 1003

 #B[8] = 309  this is what I want   

两个数组的长度相同,但如您所见,我正在尝试建立索引。如果我只做 B[A],它是一个越界索引错误代码。我尝试使用:

 A.searchsorted(B) #but still get an error. 

我不确定我是否有任何意义,因为我知道我的想法是什么,但就是无法说出正确的措辞以使其更容易。希望上面的例子能说明我想要什么。我在网站上发现的唯一内容是 searchsorted(也许我使用不正确)。这个方法是从之前的问题中引起我注意的,我进一步研究了它,但仍然找不到我要找的东西。

【问题讨论】:

  • 你的问题没有意义。 value in B that is parallel to the value in A 是什么意思? 201 不是 B[2],201 是 B[0]。 A[0] 是 2。B[A[0]] 也是 454,因为 B[A[0]] == B[2] == 454。
  • 我想要 B[2] = 201,即使 B[0] = 201。当我的意思是并行时,我的意思是必须有相似长度的数组。假设我们将它们并排放置。我想要一个数组的值对应于另一个数组。 2和201分别是A[0]和B[0]。我想通过使用 A 中的第一个值来获得 B 中的第一个值,因此 B[2] = 201,而不是 B[0]。我不确定这是否可能,但这是否更有意义?
  • 你不能使用A中的第一个值得到B中的第一个值。 A 中的第一个值是 2,您可以将其用作具有语法 B[A[0]] 的索引,但这不会给您“B 中的第一个值”,而是 B 中的第三个值,因为A[0] == 2,数组索引从 0 开始。编辑:简单地说,B 中的第一个值是 B[0],句点。在您的示例中为 201。
  • 谢谢。我正在阅读一个 searchsorted 示例,其中 A = [1, 4, 5, 8] 和 B = [ 0, 1, 3] 和 A.searchsorted(B) = [1,4,8]。我想,我想看看我是否可以使用它,但是使用 Python 索引,它看起来真的是不可能的。
  • 您可能对 searchsorted 有误解。见:stackoverflow.com/questions/15425962/…

标签: arrays python-2.7 indexing


【解决方案1】:

听起来您正试图从一个列表中找到一个值的索引,然后在该索引处返回另一个列表中的值。

A = [2, 8, 29, 34, 54, 61, 73, 89, 97, 101]
B = [201, 309, 454, 540, 602, 750, 889, 973, 1003, 1120]
print(B[A.index(2)])
print(B[A.index(8)])

生产:

201
309

注意:如果第一个列表中不存在该值,这将导致运行时错误:

print(B[A.index(42)])

会爆炸并摧毁半径 5 公里内的一切。见https://ideone.com/dfVci9

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-05-29
    • 2020-09-20
    • 2011-03-23
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多