扫二维码与项目经理沟通
我们在微信上24小时期待你的声音
解答本文疑问/技术咨询/运营咨询/技术建议/互联网交流
function
站在用户的角度思考问题,与客户深入沟通,找到兴平网站设计与兴平网站推广的解决方案,凭借多年的经验,让设计与互联网技术结合,创造个性化、用户体验好的作品,建站类型包括:网站设计、网站制作、企业官网、英文网站、手机端网站、网站推广、空间域名、网络空间、企业邮箱。业务覆盖兴平地区。
clear(arr)
{//
1
如何获取数组中每一个元素出现的次数var
o
=
{};
//
1.1
记录数组中元素出现的次数for
(var
i
=
0;
i
arr.length;
i++)
{var
item
=
arr[i];
//
数组中的每一个元素//
o[item]
=
1;//
1.2
判断o对象是否有当前遍历到的属性if
(o[item])
{//
如果o[item]
存在,说明次数不为1o[item]++;}
else
{//
如果o[item]
不存在,说明是第一次出现o[item]
=
1;}}//
console.log(o);
//
2
生成一个新的数组,存储不重复的元素var
newArray
=
[];//
2.1
遍历对象o中的所有属性for
(var
key
in
o)
{//
2.2
判断o对象中当前属性的值是否为
1
如果为1
说明不重复直接放到新数组中if
(o[key]
===
1)
{newArray.push(key);}
else
{//
o对象中当前属性
次数不为1
,说明有重复的,如果有重复的话,只存储一次//
判断当前的newArray数组中是否已经有该元素
if
(newArray.indexOf(key)
===
-1)
{newArray.push(key);}}}return
newArray;}
var
array
=
['c',
'a',
'z',
'a',
'x',
'a'];var
newArray
=
clear(array);console.log(newArray);
题主你好,
可以通过"集合"过渡一下, 来实现列表的去重, 即整个过程是:
原始列表--集合--再转回列表
分解来看:
写到一起的形式:
=====
希望可以帮到题主, 欢迎追问.
例如上面的例子,实现一个整形集合的累加。假设lst = [1,2,3,4,5],实现累加的方式有很多:
第一种:用sum函数。
sum(lst)
第二种:循环方式。
def customer_sum(lst):
result = 0
for x in lst:
result+=x
return result
def customer_sum(lst):
result = 0
while lst:
temp = lst.pop(0)
result+=temp
return result
if name ==" main ":
lst = [1,2,3,4,5]
print customer_sum(lst)
第三种:递推求和
def add(lst,result):
if lst:
temp = lst.pop(0)
temp+=result
return add(lst,temp)
else:
return result
if name ==" main ":
lst = [1,2,3,4,5]
print add(lst,0)
第四种:reduce方式
lst = [1,2,3,4,5]
print reduce(lambda x,y:x+y,lst)
lst = [1,2,3,4,5]
print reduce(lambda x,y:x+y,lst,0)
def add(x,y):
return x+y
print reduce(add, lst)
def add(x,y):
return x+y
print reduce(add, lst,0)
有一个序列集合,例如[1,1,2,3,2,3,3,5,6,7,7,6,5,5,5],统计这个集合所有键的重复个数,例如1出现了两次,2出现了两次等。大致的思路就是用字典存储,元素就是字典的key,出现的次数就是字典的value。方法依然很多
第一种:for循环判断
def statistics(lst):
dic = {}
for k in lst:
if not k in dic:
dic[k] = 1
else:
dic[k] +=1
return dic
lst = [1,1,2,3,2,3,3,5,6,7,7,6,5,5,5]
print(statistics(lst))
第二种:比较取巧的,先把列表用set方式去重,然后用列表的count方法
def statistics2(lst):
m = set(lst)
dic = {}
for x in m:
dic[x] = lst.count(x)
lst = [1,1,2,3,2,3,3,5,6,7,7,6,5,5,5]
print statistics2(lst)
第三种:用reduce方式
def statistics(dic,k):
if not k in dic:
dic[k] = 1
else:
dic[k] +=1
return dic
lst = [1,1,2,3,2,3,3,5,6,7,7,6,5,5,5]
print reduce(statistics,lst,{})
或者
d = {}
d.extend(lst)
print reduce(statistics,d)
通过上面的例子发现,凡是要对一个集合进行操作的,并且要有一个统计结果的,能够用循环或者递归方式解决的问题,一般情况下都可以用reduce方式实现。
Python数字列表去重,还能按原来的顺序输出.
第一种方法
alist = [1, 2, 2, 4, 4, 6, 7]
b = []
for i in alist:
if i not in b:
b.append(i)
print(b)
源代码(注意源代码的缩进)
第二种方法
alist = [1, 2, 2, 4, 4, 6, 7]
formatList = list(set(alist))
formatList.sort(key=alist.index)
print (formatList)
源代码(注意源代码的缩进)
我们在微信上24小时期待你的声音
解答本文疑问/技术咨询/运营咨询/技术建议/互联网交流