将i与联合集区分开来,原始集合即将来临?

时间:2016-05-19 05:10:37

标签: python set

我是编程语言的新手,所以请在Python上帮助我解决这个问题。

我得到了这样的excel数据:

data1=[[161.0, 48.0], [160.0, 96.0], [163.0, 61.0], [160.0, 115.0], [173.0, 105.0]]

data2=[[180.0, 91.0], [180.0, 80.0], [174.0, 94.0], [170.0, 101.0], [172.0, 78.0]]

假设我只想关心每个数据的X点,所以我得到了这个:

unique_X1=[160, 161, 163, 173]

unique_X2=[170, 172, 174, 180]

然后,我可以将联合设为X:

set([160, 161, 163, 170, **172**, **173**, 174, 180])

所以,我现在要做的是,制作一套"切点"如果联合集中的i和i + 1来自不同的数据集(unique_X1或unique_X2)。并且切点的值将是(i + [i + 1])/ 2

例如,172来自unique_X2,173来自unique_X1,因此切割点为(172 + 173)/2=172.5

这是我到目前为止所做的事情,如果有人可以帮助我完成剩下的工作,我将非常感激。我相信我必须使用循环,但我不知道如何。提前谢谢

import xlrd

#getting data
book = xlrd.open_workbook('sampledata1.xlsx')
sheet1 = book.sheet_by_name('Female')
sheet2 = book.sheet_by_name('Male')
data1 = [[sheet1.cell_value(r, c) for c in range(sheet1.ncols)] for r in range(sheet1.nrows)]
data2 = [[sheet2.cell_value(r, c) for c in range(sheet2.ncols)] for r in range(sheet2.nrows)]
print data1
print data2

X1=[int(i[0]) for i in data1]
X2=[int(i[0]) for i in data2]
# print X1
# print X2

#collecting same points
def unique(X1):
    return list(set(X1))
# print unique(X1)

def unique(X2):
    return list(set(X2))
# print unique(X2)

#sorting data
sort_unique_X1 = sorted(unique(X1))
sort_unique_X2 = sorted(unique(X2))
print sort_unique_X1
print sort_unique_X2

#union X1 and X2
X=set(unique(X1)).union(unique(X2))
print X


#generating cut points
# cut_X = []

1 个答案:

答案 0 :(得分:0)

试试这个:

cut_X = []
for i,j in zip(X,X[1:]):
    if i in unique_X1 and j in unique_X2:
        cut_X.append(0.5*(i+j))
    elif i in unique_X2 and j in unique_X1:
        cut_X.append(0.5*(i+j))

目前的数字print cut_X应生成[166.5, 172.5, 173.5]