如何正确地置换数字?

时间:2018-01-27 08:56:39

标签: python-3.x list

我的数据集是一个8个数字的文本文件,每个数字格式为:

   76768,766846646,979,3290,5244,69797,8080,3414
   7643,73467346,826382,827382,3,826,864,686

这些数字有两个特殊之处:

  1. 每行共有8个以逗号分隔的数字
  2. 他们都是积极的价值观。
  3. 我应该看到我的数据的方式是xy

    • x是从第一个
    • 开始的每隔一个值
    • y是从每行的第二个词开始的每个其他值。

    所以将第一行作为示例x可以看作是76768,979,5244,8080y被视为766846646,3290,69797,3414

    我要做的是在x的最高项附近添加y的最高项,并在x的最小项附近添加y的最小项我应该为第一行得到的值是76768,766846646,979,3290

    代码:

    from functools import reduce
    
    text = "76768,766846646,979,3290,5244,69797,8080,3414"  # input text
    s = text.split(",")  # make it into a list of strings
    
    from operator import add
    output = list(
        reduce(
            add,
            zip(
                sorted(s[::2], reverse=True)[::(len(s)//2)-1],
                sorted(s[1::2], reverse=True)[::(len(s)//2)-1]
            )
        )
    )
    print (output)
    

    但我得到的输出是['979', '766846646', '5244', '3290'],但我偶尔会使用其他示例获取正确的值,而无法了解问题所在或修复它。

1 个答案:

答案 0 :(得分:2)

您正在排序字符串(按字母顺序排列),而您确实需要将值排序为数字。从这开始:

s = [int(i) for i in text.split(",")]  # make it into a list of numbers

现在示例的输出将是:

[76768, 766846646, 979, 3290]