【问题标题】:How to check the index value from the list in python如何从python中的列表中检查索引值
【发布时间】:2018-04-12 01:35:47
【问题描述】:

我的代码需要一些帮助。我想检查self.channels_index 的值是否不大于或等于self.channel,以便我可以从列表中获取元素。如果该值大于self.channel 值,则不执行任何操作。

当我尝试这个时:

self.channels_Index += 1

for index in enumerate(self.channel):
    if index > self.channels_Index:
       new_channel = self.channel[self.channels_Index]

我会得到一个错误:IndexError: list index out of range.

错误在这一行突出显示:

new_channel = self.channel[self.channels_Index]

列表中最后一个元素之后没有值。

这是self.channel 列表:

 ['101 BBC One S East', '102 BBC Two', '103 ITV', '104 Channel 4', '105 Channel 5', '106 Sky One', '107 Sky Living', '108 Sky Atlantic', '401 Sky Sports 1 UK', '402 SKY Sports 2 UK', '403 Sky Sports 3 UK', '404 Sky Sports 4 UK', '405 Sky Sports 5 UK', '406 Sky Sports News HQ', '407 Sky Sports F1', '408 Sky Sports 1 HD', '409 Sky Sports 2 HD', '410 Sky Sports 3 HD', '411 Sky Sports 4 HD', '412 Sky Sports 5 HD', '413 Eurosport 1 UK', '414 Eurosport 2 UK', '415 BT Sport 1', '416 BT Sport 2', '417 At the Races', '418 BT Sport ESPN', '419 MUTV', '420 Chelsea TV', '421 Eir Sport 1', '422 Eir Sport 2']

我期望实现的是我正在使用self.channels_index 添加值并检查self.channel 值,以便我可以使用该值获取元素,直到我可以从它的列表中获取最后一个元素是422 Eir Sport 2

你能告诉我一个例子,我如何使用self.channels_index 来检查self.channel 值,看看该值是否等于或不大于最后一个值,这样我就可以获取元素,直到我可以得到列表中的最后一个元素?

【问题讨论】:

  • 尝试打印index - 这不是你想的那样!
  • "我期望实现的是我正在使用 self.channels_index 添加值并检查 self.channel 值,以便我可以使用该值获取元素,直到获得最后一个列表中的元素是 422 Eir Sport 2" - 这不清楚!
  • 你不明白什么?
  • 我刚刚给你写了我没有得到的东西……你关注的是如何而不是what。我们不应该关心您的实现,而是应该了解您想要实现的什么。您可以开始:我有一个值列表,我想提取 [...]。
  • 哦,好吧,当我使用 self.channels_index 将其添加到每次时,我都有值列表,我想使用值从列表中提取元素,直到我可以从列表中获取最后一个元素。我希望它清楚吗?

标签: python python-2.7 list indexing


【解决方案1】:

enumerate() 返回索引和值的列表。观察:

>>> L = ['hi', 'hello', 'hey']
>>> list(enumerate(L))
[(0, 'hi'), (1, 'hello'), (2, 'hey')]

您需要通过在 for 循环中添加两个变量来修改代码以反映这一点:

for index, val in enumerate(self.channel):
    if index > self.channels_Index:
       new_channel = val

【讨论】:

  • 非常感谢您,但我想使用该值从列表中获取元素。示例:如果我有值 10,我想从列表中获取 402 SKY Sports 2 UK。因此,如果我有 30 的值,那么我想获取 422 Eir Sport 2。如果我有 31 的值或任何大于的值,那么我不想做任何事情。您发布的代码将从列表中获取最后一个错误的元素!
  • 我想要实现的是我想使用 '108 Sky Atlantic', '401 Sky Sports 1 UK', '402 SKY Sports 2 UK' 这样的值从列表中获取元素,依此类推,直到我有值 30 来获取 422 Eir Sport 2。我希望这很清楚?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2023-03-26
  • 1970-01-01
  • 1970-01-01
  • 2020-10-12
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多