在列表中正数和负数区分出来,并且对它们进行分列

本文介绍了如何使用Python通过itertools.groupby、while循环和flag判断三种方法,将列表中的正数和负数分别分组。第一种方法借助内置函数,第二种通过计数和乘积,第三种则是利用循环和标志状态。
摘要由CSDN通过智能技术生成

怎么把一个列表中的正数和负数区分出来,并且让这些正数归为一组一组,负的归为一组一组

有三种方法可以考虑一下

最简单的方法,直接调用函数即可
import itertools
list1 = [1,1,1,1,1,1,1,1,1,1,-1,-1,-1,-1,-1,2,2,2,2,2,2,2]
for i,g in itertools.groupby(list1,lambda x:x<0):
    print(list(g))

image-20210823141005206

第二种方法,这里是用while先对判断count是否小于列表的长度,然后再用乘积进行判断,如果两个相乘为正的,说明这两个数属于正数或者负数,然后再进行相加,最后当count总长度等于列表长度的时候break

list= [1,1,2,3,4,5,5,6,7,-1,-2,-3,-4,5,5,6,7,8,9-1,-1,-1,-1,2,2,3,4,4,5,6,6]
list_out = []
temp = []
count =0
while count+1 < len(list):
    temp.append(list[count])
    while list[count] * list[count+1] >0:
        temp.append(list[count+1])
        count +=1
        if count+1 == len(list):
            break
    list_out.append(temp)
    temp =[]
    count +=1
print(list_out)

image-20210823141208432

第三种方法,是加多一个flag判断条件,先让列表进行for循环,然后对其进行判断,当该树大于0并且flag大于0的时候,s列表添加,反之则相反,最后对其进行清空,再把内容进行入栈

MyList=[1,1,2,3,4,5,5,6,7,-1,-2,-3,-4,5,5,6,7,8,1,-1,-1,-1,2,2,3,4,4,5,6,6]
s = []
flag=0
for i in MyList:
    if i==0:
        continue
    if len(s) == 0 and i !=0 :
        s.append(i)
    elif i>0 and flag>=0:
        s.append(i)
        flag=1
    elif i<0 and flag<=0:
        s.append(i)
        flag=-1

    else:
        if len(s) >= 2:
            print(s)
        s = []    # 清空
        flag=0
        s.append(i)  # 入栈
# 最后一轮,需判断下
if len(s) >= 2:
    print(s)

image-20210823141313317

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

有猫腻妖

你的鼓励是我更新的动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值