标题:一个关于列表元素替换的问题,实在没思路。
只看楼主
ilsoviet1917
Rank: 2
等 级:论坛游民
帖 子:103
专家分:26
注 册:2010-5-11
结帖率:84.21%
已结贴  问题点数:20 回复次数:5 
一个关于列表元素替换的问题,实在没思路。
['w', 'u', '1', 'y', 'a', '1']
如果我想把这个列表转化成[''u', '1', 'ia', '1']用什么方式呢?是不是可以用数字作为判断条件切割字符?正则表达式?求大佬给个答案。
搜索更多相关主题的帖子: 思路 列表 元素 正则表达式 替换 
2021-08-22 00:56
古123
Rank: 9Rank: 9Rank: 9
等 级:贵宾
威 望:14
帖 子:219
专家分:1098
注 册:2017-2-5
得分:0 
回复 楼主 ilsoviet1917
没看懂你要干啥?
2021-08-22 18:24
ilsoviet1917
Rank: 2
等 级:论坛游民
帖 子:103
专家分:26
注 册:2010-5-11
得分:0 
回复 2楼 古123
在这个列表里,如果w的下一个元素是u那就删除w,如果y的下一个元素是a,那就删除y。
['w', 'u', '1', 'y', 'a', '1']

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

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

2021-08-22 22:35
古123
Rank: 9Rank: 9Rank: 9
等 级:贵宾
威 望:14
帖 子:219
专家分:1098
注 册:2017-2-5
得分:0 
回复 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)
2021-08-23 08:48
傻眼猫咪
Rank: 2
等 级:论坛游民
威 望:1
帖 子:38
专家分:85
注 册:2021-8-2
得分:20 
一行代碼就行了
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']
2021-08-24 12:25
古123
Rank: 9Rank: 9Rank: 9
等 级:贵宾
威 望:14
帖 子:219
专家分:1098
注 册:2017-2-5
得分:0 
回复 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:]
2021-08-24 15:06



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-506606-1-1.html




关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.027936 second(s), 8 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved