我的数据集是一个8个数字的文本文件,每个数字格式为:
76768,766846646,979,3290,5244,69797,8080,3414
7643,73467346,826382,827382,3,826,864,686
这些数字有两个特殊之处:
我应该看到我的数据的方式是x
和y
所以将第一行作为示例x
可以看作是76768,979,5244,8080
而y
被视为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']
,但我偶尔会使用其他示例获取正确的值,而无法了解问题所在或修复它。
答案 0 :(得分:2)
您正在排序字符串(按字母顺序排列),而您确实需要将值排序为数字。从这开始:
s = [int(i) for i in text.split(",")] # make it into a list of numbers
现在示例的输出将是:
[76768, 766846646, 979, 3290]