循环和计数器(Python)

时间:2014-11-10 20:19:29

标签: python loops numpy

    RA1_matched = []
    DEC1_matched = []

    A = -1      
    for l in np.nditer(distances1):         
        A = A + 1 #counter
        for m in np.nditer(distance1_matched):              

            if m == l:
                    RA1_matched.append(RA1_order[A])
                    DEC1_matched.append(DEC1_order[A])
                    break

第二个是一个113的数组,两个是60的数组。基本上我想做的是迭代两个并找到第二个中与二元素完全相同的任何元素(我知道它们应该是另一个离开,只听我说。使用计数器A,我可以计算出数组中第二个元素编号为2的相同元素,即0.1922574是元素位置1中的两个但0.1922574是元素位置15中的第二个(我需要找到元素位置所以我可以将RA1_order中该元素位置的元素分配给RA1_matched)。但它很短(它只找到44个匹配而不是60个),因为两个小于第二个。我试过换掉它们但是当我需要计数器上升到113时,计数器才上升到59.我该怎么办?我试过用,

for X in range (0, length): #length is the size of second and goes from 0-112
    A = X,

在两个数组循环的开头,但这只是疯狂的事情发生。我本来可以做错了,我是编码的新手,我刚刚开始学习物理项目。

- 修改

经过一些反馈后,我将展开并编辑一些变量名称!该项目是一个天体物理学项目,但我会尝试概括我的问题..我正在使用列表和numpy数组的混合作为我和彼此的伙伴交换代码,但它很容易将数组转换为列表

基本上说我有两个列表,长度为100的X和长度为60的Y.我想通过列表Y并在列表X中找到相同的元素。然后,当我找到相同的元素时,我想知道该元素的在列表中的位置。使用该位置,我可以使用我编写的其他代码对某些数据进行排序。有人提到使用enumerate,但我不确定如何将其应用于我的问题。

2 个答案:

答案 0 :(得分:0)

设置和列表推导应该一起解决你的问题。

X = [2,3,4,5,6]
Y = [3,4]
Z = ['a', 'b', 'c', 'd', 'e', 'f']
print [Z[i] for i in set(X).intersection(Y)]

输出:

['d', 'e']

答案 1 :(得分:0)

详细说明我的评论,这就是我的建议:

for y in Y:
    try:
        positionInX = X.index(y)
        # use positionInX as appropriate..
    except:
        pass