使用值搜索列表中的7个元素

时间:2017-10-31 23:56:00

标签: python python-2.7

我已经获得了channels_list中的元素列表,我希望从列表101 BBC One S East中找到接下来的7个频道,以便我可以提前接下来的7个频道。

示例:我有101 BBC One S East,因此我想找到它是'108 Sky Atlantic'的7个频道,因此我可以从那里开始获取接下来的7个频道'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'

以下是代码:

channels_list = ['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']

find_channel = '101 BBC One S East'

for i, start_ch in enumerate(self.channel):
    if start_ch == channel:
       channels_list = self.channel

你能告诉我一个如何从列表中找到7个频道的例子,这样我可以使用值来获取接下来的7个频道吗?

编辑:这是:

self.channels_Index += 7

for i, start_ch in enumerate(self.channel):
    if start_ch == channel:
        my_seven_channels = self.channel[i+self.channels_Index:i+14]

1 个答案:

答案 0 :(得分:1)

要做到这一点,首先需要确保您的代码使用这些值。我将假设他们在将代码移植到Stack Overflow时丢失了,但以防万一......确保这些更改。

  1. 您的列表名为channels_list,但您的枚举尝试枚举self.channel。修复它。
  2. 找到频道的代码不使用find_channel变量。
  3. 现在关于真正的问题:
    枚举保存项目的索引及其值,因此一旦找到所需的项目,就会告诉列表“从此索引中获取项目...到此索引+ 7以上”。为此,我们使用[from:to]对其进行切片。

    代码:

    channels_list = ['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']
    
    find_channel = '101 BBC One S East'
    
    for i, start_ch in enumerate(channels_list):
        if start_ch == find_channel:
           my_seven_channels = channels_list[i:i+7] 
    
    print(my_seven_channels)
    

    更新:重新阅读您的问题后,我认为您让我们想要获得接下来的7个项目,但您希望跳过接下来的7个项目。

    my_seven_channels = channels_list[i+7:i+14] 
    

    更新2:似乎对i的含义感到困惑,所以让我澄清一下。我只是我们分配给索引的名称。下一个代码首先跳过7个项目,然后使用find_channel变量作为起始点获取接下来的14个项目。

    for channel_index, start_ch in enumerate(channels_list):
        if start_ch == find_channel:
           my_seven_channels = channels_list[channel_index+7:channel_index + 21]