找回密码
 立即注册

扫一扫,访问微社区

QQ登录

只需一步,快速开始

查看: 4845|回复: 3

[求助] 如何删除一个list里所有出现过偶数次数的元素?

2

主题

3

帖子

3

积分

贫民

积分
3
112zero 发表于 2016-10-22 13:46:54 | 显示全部楼层 |阅读模式
在尝试用一个新的list将所有重复过偶数次的元素加在里面然后从原list减掉,结果发现出现奇数次的也都被删除了,只剩下出现一次的。    lst.sort()
    newlst=[]
    for i in range(len(lst)):
        if i < len(l)-2:
            if lst[i] == lst[i+1]:
                newlst.append(l[i])
                newlst.append(l[i+1])
    for even in lst:
        if even in lst:
            lst.remove(odd)
    return lst


写的比较丑,见谅
回复

使用道具 举报

1419

主题

1891

帖子

291

积分

侠客

积分
291

最佳新人热心会员默默耕耘

whydo1 发表于 2016-10-22 19:56:38 | 显示全部楼层
  1. #-*- coding:utf-8 -*-

  2. 原列表 = ['a', 'a', 'b', 'b', 'b', 'c','c','c','c', 'd', 'e', 'e', 'e']
  3. 新列表 = []
  4. print("原始列表:",原列表)
  5. 应结束 = False
  6. while True:
  7.     for 元素 in 原列表:
  8.         if 原列表.count(元素)%2 == 0: # 元素数量为偶数
  9.             元素数量 = 原列表.count(元素)
  10.             新列表.append(元素) # 将元素添加到新列表
  11.             for i in range(元素数量): # 从原列表中去除元素
  12.                 原列表.remove(元素)


  13.         if 元素 == 原列表[-1]: #若当前元素与最后一个元素相同, 说明已经到达列表结尾
  14.             应结束 = True
  15.             break

  16.     if 应结束:
  17.         break

  18. print('修改后的原列表:',原列表)
  19. print('新列表',新列表)
复制代码
python3.4.4, win10
回复 支持 反对

使用道具 举报

0

主题

18

帖子

18

积分

贫民

积分
18
kushao1267 发表于 2016-10-25 17:11:44 | 显示全部楼层
python3写的一个代码,用的字典方法:

a = [1,2,3,1,2,3,1]

print ('修改前list:{0}'.format(a))

b = {}
for i in a:
        if i not in b:
                b[i] = a.count(i)

print ('频率统计:{0}'.format(b))

for k,v in b.items():
        if v % 2 == 0:
                for _ in range(v):
                        a.remove(k)

print ('修改后list:{0}'.format(a))
回复 支持 反对

使用道具 举报

0

主题

1

帖子

1

积分

贫民

积分
1
possessjing 发表于 2016-10-25 21:14:09 | 显示全部楼层
L1=[1,2,2,3,3,3,4,4,4,4,'a','a','b','b','b']
L=L1[:]
l=[]

for s in L:
    if L.count(s)%2 == 0:
        i=0
        while i<len(L):
            if L[i] == s:
                l.append(s)
                L.remove(s)
            else:
                i=i+1

print(L1,L,l,sep='\n')
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

快速回复 返回顶部 返回列表