Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/343.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 从列表中搜索以前的元素_Python_Python 2.7 - Fatal编程技术网

Python 从列表中搜索以前的元素

Python 从列表中搜索以前的元素,python,python-2.7,Python,Python 2.7,我需要一些帮助来跟踪列表中的索引。我想搜索以从列表中获取以前的元素。如果列表中有两个元素,我希望找到前面的5个元素,以便将它们存储在列表中 示例:当变量start\u ch显示列表中的两个元素'421 Eir Sport 1'、'422 Eir Sport 2'时,我想获取'416 BT Sport 2'、'417 At the Races'、'418 BT Sport ESPN'、'419 MUTV'、'420 Chelsea TV'的前5个元素,将它们存储在加入最后两个元素的列表中 我想让它

我需要一些帮助来跟踪列表中的索引。我想搜索以从列表中获取以前的元素。如果列表中有两个元素,我希望找到前面的5个元素,以便将它们存储在列表中

示例:当变量
start\u ch
显示列表中的两个元素
'421 Eir Sport 1'、'422 Eir Sport 2'
时,我想获取
'416 BT Sport 2'、'417 At the Races'、'418 BT Sport ESPN'、'419 MUTV'、'420 Chelsea TV'的前5个元素,将它们存储在加入最后两个元素的列表中

我想让它表现得像这样:

['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']
以下是获取两个元素时
start\u ch
显示的内容:

['421 Eir Sport 1', '422 Eir Sport 2']
以下是
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']
当我尝试这个:

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

        if len(start_ch) == 1:
           start_ch = self.channel[i:i-6]
        elif len(start_ch) == 2:
           start_ch = self.channel[i:i-5]
        elif len(start_ch) == 3:
           start_ch = self.channel[i:i-4]
        elif len(start_ch) == 4:
           start_ch = self.channel[i:i-3]
        elif len(start_ch) == 5:
           start_ch = self.channel[i:i-2]
        elif len(start_ch) == 6:
           start_ch = self.channel[i:i-1]
        print "start_ch"
        print start_ch

        for channels in start_ch:
           print "channels_list"
           channels_list.append(channels)  #add chanel to list
           print channels_list
除了最后两个元素外,我无法从列表中提取前5个元素

您能给我举一个例子,说明如何从列表中提取前5个元素,而不是最后两个元素,以便将它们连接在一起存储在列表中吗?

如下所示(可能是):

像这样(可能是):


但目前尚不清楚start_ch为['416 BT Sport 2','422 Eir Sport 2',]时的结果如何?但尚不清楚start_ch为['416 BT Sport 2','422 Eir Sport 2',]时的结果如何?
>>> 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']
>>> to_find = ['421 Eir Sport 1', '422 Eir Sport 2']
>>> target_index = self.channel.index(to_find[0])
>>> result = channel[target_index-5:target_index] + to_find
>>> result
['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']