为了账号安全,请及时绑定邮箱和手机立即绑定

如何每隔n个项目拆分一个列表

如何每隔n个项目拆分一个列表

明月笑刀无情 2022-07-05 15:34:25
我试图每隔 5 个项目拆分一个列表,然后删除接下来的两个项目('nan')。我曾尝试使用 List[:5],但这似乎无法循环使用。所需的输出是:[['1','2','3','4','5'],['1','2','3','4','5'], ['1','2','3','4','5'],['1','2','3','4','5']]List = ['1','2','3','4','5','nan','nan','1','2','3','4','5','nan','nan','1','2','3','4','5','nan','nan','1','2','3','4','5','nan','nan']for i in List:    # split first 5 items    # delete next two items# Desired output:# [['1','2','3','4','5'],['1','2','3','4','5'],['1','2','3','4','5'],['1','2','3','4','5']]
查看完整描述

4 回答

?
侃侃尔雅

TA贡献1801条经验 获得超16个赞

有很多方法可以做到这一点。我建议步进 7 然后拼接 5。


data = ['1','2','3','4','5','nan','nan','1','2','3','4','5','nan','nan','1','2','3','4','5','nan','nan','1','2','3','4','5','nan','nan']


# Step by 7 and keep the first 5

chunks = [data[i:i+5] for i in range(0, len(data), 7)]


print(*chunks, sep='\n')

输出:


['1', '2', '3', '4', '5']

['1', '2', '3', '4', '5']

['1', '2', '3', '4', '5']

['1', '2', '3', '4', '5']


查看完整回答
反对 回复 2022-07-05
?
白衣非少年

TA贡献1155条经验 获得超0个赞

警告:确保列表遵循您所说的规则,每 5 项 2 nan 之后。


此循环会将前 5 个项目添加为列表,并删除前 7 个项目。


lst = ['1','2','3','4','5','nan','nan','1','2','3','4','5','nan','nan','1','2','3','4','5','nan','nan','1','2','3','4','5','nan','nan']

output = []


while True:

    if len(lst) <= 0:

        break


    output.append(lst[:5])

    del lst[:7]


print(output) # [['1', '2', '3', '4', '5'], ['1', '2', '3', '4', '5'], ['1', '2', '3', '4', '5'], ['1', '2', '3', '4', '5']]



查看完整回答
反对 回复 2022-07-05
?
森栏

TA贡献1810条经验 获得超5个赞

我喜欢拼接的答案。


这是我的 2 美分。


# changed var name away from var type

myList = ['1','2','3','4','5','nan','nan','1','2','3','4','10','nan','nan','1','2','3','4','15','nan','nan','1','2','3','4','20','nan','nan']

newList = []   # declare new list of lists to create

addItem = []   # declare temp list

myIndex = 0    # declare temp counting variable


for i in myList:

    myIndex +=1

    if myIndex==6:

        nothing = 0  #do nothing

    elif myIndex==7: #add sub list to new list and reset variables

        if len(addItem)>0:

            newList.append(list(addItem))

            addItem=[]

            myIndex = 0

    else:

       addItem.append(i)


#output

print(newList)


查看完整回答
反对 回复 2022-07-05
?
qq_花开花谢_0

TA贡献1835条经验 获得超7个赞

如果列表不遵循您提到的规则但您希望始终在 NAN 之间拆分序列,则直接解决方案:


result, temp = [], []


for item in lst:

    if item != 'nan':

        temp.append(item)

    elif temp:

        result.append(list(temp))

        temp = []


查看完整回答
反对 回复 2022-07-05
  • 4 回答
  • 0 关注
  • 111 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信