注册 登录
编程论坛 Python论坛

一个关于列表元素替换的问题,实在没思路。

ilsoviet1917 发布于 2021-08-22 00:56, 1523 次点击
['w', 'u', '1', 'y', 'a', '1']
如果我想把这个列表转化成[''u', '1', 'ia', '1']用什么方式呢?是不是可以用数字作为判断条件切割字符?正则表达式?求大佬给个答案。
5 回复
#2
古1232021-08-22 18:24
回复 楼主 ilsoviet1917
没看懂你要干啥?
#3
ilsoviet19172021-08-22 22:35
回复 2楼 古123
在这个列表里,如果w的下一个元素是u那就删除w,如果y的下一个元素是a,那就删除y。
['w', 'u', '1', 'y', 'a', '1']

我的想法是遍历列表,如果某个元素等于w并且这个元素+1等于u,那么就删除w,但是用for语句写不出来。

[此贴子已经被作者于2021-8-22 22:39编辑过]

#4
古1232021-08-23 08:48
回复 3楼 ilsoviet1917
程序代码:
l = ['w','u','l','y','a','l']

windex = 0
yindex = 0
for i,v in enumerate(l):
    if v == 'w':
        windex = i
    elif v == 'y':
        yindex = i
   
    if v == 'u' and (i - windex) == 1:
        del l[windex]
   
    if v == 'a' and (i - yindex) == 1:
        del l[yindex]

print(l)
#5
傻眼猫咪2021-08-24 12:25
一行代碼就行了
arr = ['w', 'u', '1', 'y', 'a', '1']
arr = [arr[i] for i in range(len(arr)-1) if arr[i+1] not in ['u', 'a']]+arr[-1:]


輸出:
['u', '1', 'a', '1']
#6
古1232021-08-24 15:06
回复 5楼 傻眼猫咪
学到了
要求是'w'后面的'u','y'后面的'a'。这样会把所有u,a之前的都删除。
我加了个字典。
arr = ['w', 'u','d','u', '1', 'y', 'a']

d = {'w':'u','y':'a'}
arr = [arr[i] for i in range(len(arr)-1) if arr[i] in d.keys() and arr[i+1] != d[arr[i]]  or arr[i] not in d.keys()] + arr[-1:]
1