python_range(m)迭代+set()去除重复元素

来源:互联网 发布:搜狐动态ip软件 编辑:程序博客网 时间:2024/05/21 01:28

1 寻找平衡点:
假如一个数组中的元素,其前面的部分等于后面的部分,那么这个点的位序就是平衡点

numbers = [1,3,5,7,8,25,4,20,29]; sum = 0;for num in numbers:    sum += num; #求出数组的和for index in range(len(numbers)):    former = 0;    after = 0;    i = 0;    for i in range(index):#求出当前循环点的前半段数据        former += numbers[i];    after = sum - former - numbers[index];#用和减去当前数和前半部分和    if(former == after):        print ("The balance point is:",numbers[index]);

(1)for循环中的递增迭代: for index in range(len(numbers)): 对于数组的索引迭代,需要用到len()求数组的长度,用range进行索引迭代。

for i in range(index):在这句循环的时候,本来我的意思是i 递增到index 循环,但是非常不幸运,编译不过:
Traceback (most recent call last):
File “BalancePoint.py”, line 15, in
for i in index:
TypeError: ‘int’ object is not iterable
不能直接用int进行迭代,而必须加个range.

2 删除list里面的重复元素:

方法一:直接将list 转变为set

a = [1,2,3,3,4,5,1,1]a = list(set(a))                    print (a,"/n");

方法二: 就算排序,然后逐个比较,鉴于del会直接把元素删除,设置了个flag数组来标记该删除的元素:

NameList = ["Carol","Andy","Terry","Feng","Carol","Jie","Terry"];NameList.sort();Flag=[];for index in range(len(NameList)):    Flag.insert(index,0);# = 0;index =0;secondIndex=0;for index in range(len(NameList)-1):    inx = index+1;    for secondIndex in NameList[index+1:]:        if (NameList[index]== secondIndex):            #del NameList[secondIndex];            #Flag.insert(secondIndex,1);            Flag[index] = 1;        inx = inx +1;print("/n");print (Flag,"/n");index = 0;end = range(len(NameList));for index in end:    if (Flag[index] ==1):        del NameList[index];        #print (index,"/n");print (NameList,"/n");

说一下我遇到的问题:
第一个,定义一个和原来list长度相同的全为零的数组。

Flag=[];for index in range(len(NameList)):    Flag.insert(index,0);# = 0;

这个写就可以了,比较郁闷的是最开始没定义Flag[].
后面使用的时候一直报错。

第二个: for secondIndex in NameList[index+1:]:
我最开始是这么写的 for secondIndex in NameList:,
然后再这句话前头赋值 secondIndex=NameList[index+1];
然后一直就debug不对,seondIndex直接从第一个元素开始,最开始还以为是涉及全局变量和局部变量的问题,还使了global,结果根本就不是,我的理解是 secondIndex在这里直接被赋值了,因为in NameList是从最初开始循环的。

第三个: 这个不算问题,主要是还是对语法不是很熟悉,才开始学,最开始饮用list里面的元素我是这么写的NameList(index+1);区别在于()

原创粉丝点击