在python中计算较小的数字

时间:2015-10-14 16:50:40

标签: python indexing

我正在尝试编写代码作为模拟器的一部分,该模拟器将读取数字列表并将它们与次要数字列表进行比较,并告诉您有多少数字小于第一个数字。例如

X=[5,20,14,1,7]
Y=[2,12,9,5,4,6]

代码将获取第一个X值5并查看有多少Y值小于5.因此输出Z看起来像

Z=[2,6,6,0,4]

我根本不熟悉这些概念,我想知道如何为这类工作制作功能。我将如何制作一个可以通过的for循环并比较那样的数字?也可以将列表从最小值组合到最大值,然后只搜索该列表中的X值并在列表中打印它的位置?

4 个答案:

答案 0 :(得分:1)

您可以使用地图和列表理解在一行中执行此操作:

first = [5, 20, 14, 1, 7]
second = [2, 12, 9, 5, 4, 6]

z = map(lambda x: len([y for y in second if x > y]), first)

或没有lambda(如@RobertB所写):

z = [sum([x > y for y in second]) for x in first]

结果是:

[2, 6, 6, 0, 4]

答案 1 :(得分:1)

类似的东西:

 // sort using a custom function object
    class customLess{
        Graph &_g;
    public:
        customLess(Graph g)
        {
            _g = g;
        }

        bool operator()(const Edge& e1, const Edge& e2)
        {   
           return _g[e1].source < _g[e2].source || (_g[e1].source ==  _g[e2].source && _g[e1].target < _g[e2].target);
        }   
     } ;

    std::sort(edgs.begin(), edgs.end(), customLess(g));

答案 2 :(得分:0)

有很多方法可以解决上述问题。我会解释最简单的方法,虽然它不是最有效的方法

概念:嵌套循环

for x in range (0, a1_len-1):
    for y in range (0, a2_len -1):
        if a[y] < a[x]:
            new_array.append(a[y])
    print (new_array)

希望这有帮助

答案 3 :(得分:0)

另一个使用numpy广播的答案:

import numpy as np
np.apply_along_axis(np.sum,0,np.array(Y).reshape((len(Y),1))<X)