python中if多重条件_Python列表满足多重条件设置问题

a = [1, 3, 4, 0, 1, 5, 5, 1, 5, 1, 5, 6, 2, 3, 1, 5, 3]

条件:

删除所有 5 元素前面的元素 1

在所有的 3 元素后面加上 3 个元素 2

该怎么操作?

更新:是两个条件同时满足,不是分别。

a = [1, 3, 4, 0, 1, 5, 5, 1, 5, 1, 5, 6, 2, 3, 1, 5, 3]

','.join( [str(i) for i in a] ).replace('1,5', '5').replace('3', '3,2,2,2').split(',')

感谢 @土豆_612874 指正,不过使用 enumerate 会出现列表越界问题,

1.

for i in range(len(a)-1, 0, -1):

if a[i] == 5 and a[i-1] ==1:

a.pop(i-1)

print a

2.

for i in range(len(a)-1, -1, -1):

if a[i] == 3:

a.insert(i+1, 2)

a.insert(i+1, 2)

a.insert(i+1, 2)

print a

@m3l3_L 答案可以更加精简点,用enumerate

另外删除所有 5 元素前面的元素 1,应该只是指紧挨着5的那个1吧?

1.

for i, n in enumerate(a):

if n == 1 and a[i+1] == 5:

a.pop(i)

2.这样的实现其实也是有问题的,但是比较QUICK AND DIRTY。如果在3后面插入又是3,那么就死循环了。

for i, n in enumerate(a):

if n == 3:

a.insert(i+1, 2)

a.insert(i+1, 2)

a.insert(i+1, 2)

a = [1, 3, 4, 0, 1, 5, 5, 1, 5, 1, 5, 6, 2, 3, 1, 5, 3]

a = [ a[i] for i in range(len(a)) if i == len(a) - 1 or a[i] != 1 or a[i+1] != 5 ]

a = sum([x == 3 and [3,2,2,2] or [x] for x in a], [])

print(a)

玩蛇网文章,转载请注明出处和文章网址:https://www.iplaypy.com/wenda/wd19182.html

相关文章 Recommend

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值