【问题标题】:How do I get certain values at the end of my list, get these values every so often, and insert in certain positions in my original list in Python?如何在列表末尾获取某些值,每隔一段时间获取这些值,并在 Python 中插入原始列表中的某些位置?
【发布时间】:2021-09-29 06:20:50
【问题描述】:

假设我有一个这样的列表:

ls = [a1,a2,a3,a4,a5,a6,a7,a8,a9,a10,a11,a12,a13,a14]

我想通过以下方式获取此列表的最后六个条目:

new_ls = ls[-6:]

从这里,我想获取这个新列表并获取每两个 new_ls 并将其插入到每两个 ls 之间,这样我的输出看起来像:

output_ls = [a1,a2,a9,a10,a3,a4,a11,a12,a5,a6,a13,a14,a7,a8]

我该怎么做?谢谢!

这是我迄今为止在我的代码中尝试过的,total_ls 有 108 个元素:

new_ls1 = list(xy4b1.items())
new_ls2 = list(xy4b2.items())
total_ls = new_ls1 + new_ls2

size = 2
start = -36
test_ls = total_ls[start:start+size]

total_ls.insert(4,test_ls)

我只能将我的“最后一个元素”插入到我的原始列表中。我还没有完成 for 循环实现,因为我不知道怎么做。

【问题讨论】:

  • 到目前为止你尝试过什么?请发布您的代码
  • 您尝试了哪些方法,但它如何不起作用?这不是解决编程难题的服务。
  • @James 我已经编辑了我的帖子。
  • 感谢@Prune 的提醒。对此感到抱歉。

标签: python list loops iteration


【解决方案1】:

根据要求添加变量 NewList 的 Python 示例:

ls = ['a1','a2','a3','a4','a5','a6','a7','a8','a9','a10']
newList= ls[-4:]
ls = ls[0:len(ls)-4]
print(ls)
print(newList)
endList=[]
isPutFromNewList = True
amountToTakeFromNewList =2
amountOfOldListToHaveBetween=6
lsCounter=0;
newListCounter=0
i=0
while(len(endList)!=(len(ls)+len(newList))):
  if((i%amountOfOldListToHaveBetween==0 and not isPutFromNewList) or (i%amountToTakeFromNewList==0 and isPutFromNewList)):
    isPutFromNewList = not isPutFromNewList
  
  if(isPutFromNewList and newListCounter<len(newList)):
    endList.append(newList[newListCounter])
    newListCounter=newListCounter+1
  
  if(not isPutFromNewList and lsCounter<len(ls)):
    endList.append(ls[lsCounter])
    lsCounter=lsCounter+1
  i= i+1
  
print("end list:",endList)

下面的 JS 示例,因为我写得很开心:

var ls = ['a1','a2','a3','a4','a5','a6','a7','a8','a9','a10'];
var newList= ls.slice(-4)
ls = ls.slice(0,ls.length-4)
console.log(ls);
console.log(newList);
var endList=[];
var isPutFromNewList = true;
var lsCounter=0;
var newListCounter=0;
for(var i=0 ;(endList.length!=(ls.length+newList.length));i++){
  if(i%2==0){
    isPutFromNewList = !isPutFromNewList;
  }
  if(isPutFromNewList && newListCounter<newList.length){
    endList.push(newList[newListCounter]);
    newListCounter++;
  }
  
  if(! isPutFromNewList && lsCounter<ls.length){
    endList.push(ls[lsCounter]);
    lsCounter++;
  }
  
}
console.log("end list:",endList);

【讨论】:

  • 对不起,语言是python。
  • @NikNack 已修复
  • @StarshipladDec 非常感谢!非常有帮助!不过要澄清一个问题,如果我有一个 108 个元素长的列表,并且我想让 newList 成为该列表的最后 36 个元素,然后从这里开始,每隔 6 个将新列表中的两个分组插入到原始列表中,我会修改什么以使原始列表中的每 6 个元素都具有此功能?谢谢!
  • 您对我的问题很有帮助。我很感激!如果您能帮助我发表评论,我将非常感谢并将其标记为已回答。很高兴你玩得开心!
  • 我更新了我的示例以进一步反映我在说什么。对于垃圾邮件,我们深表歉意。
猜你喜欢
  • 2021-02-23
  • 2016-01-23
  • 2015-10-28
  • 1970-01-01
  • 1970-01-01
  • 2018-11-13
  • 2016-01-14
  • 2014-10-01
相关资源
最近更新 更多