Python 从列表中搜索以前的元素
我需要一些帮助来跟踪列表中的索引。我想搜索以从列表中获取以前的元素。如果列表中有两个元素,我希望找到前面的5个元素,以便将它们存储在列表中 示例:当变量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个元素,将它们存储在加入最后两个元素的列表中 我想让它
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']