LINUX.ORG.RU

как сравнить и обьеденить елементы в списках?

 


0

1

Данные:

CATEGORIES = ["0","1","2","3","4","5","6","7","8","9","A","B","C","D","E","F","G","H","I","J","K","L","M","N","O","P","R","S","T","U","V","W","X","Y","Z"]
KR8877J = [[0.002,0.006,0.004,0.045,0.002,0.017,0.006,0.077,0.001,0.035,0.042,0.005,0.004,0.039,0.001,0.002,0.001,0.008,0.058,0.352,0.002,0.007,0.017,0.004,0.007,0.007,0.007,0.004,0.005,0.009,0.089,0.036,0.053,0.041,0.004], [0.003,0.007,0.005,0.075,0.001,0.020,0.006,0.044,0.002,0.035,0.026,0.004,0.004,0.033,0.001,0.001,0.003,0.008,0.049,0.360,0.002,0.007,0.021,0.005,0.009,0.003,0.008,0.007,0.003,0.014,0.092,0.048,0.058,0.031,0.004], [0.002,0.000,0.025,0.012,0.006,0.002,0.001,0.627,0.006,0.021,0.022,0.008,0.004,0.006,0.004,0.033,0.000,0.006,0.011,0.009,0.002,0.002,0.009,0.000,0.002,0.040,0.007,0.005,0.015,0.000,0.035,0.001,0.008,0.015,0.053], [0.056,0.008,0.023,0.038,0.015,0.007,0.050,0.006,0.412,0.004,0.005,0.027,0.011,0.005,0.021,0.007,0.073,0.024,0.012,0.005,0.013,0.005,0.027,0.003,0.015,0.001,0.005,0.074,0.002,0.022,0.005,0.011,0.002,0.001,0.006], [0.025,0.011,0.025,0.034,0.018,0.027,0.090,0.008,0.258,0.006,0.007,0.026,0.016,0.008,0.026,0.011,0.079,0.030,0.026,0.008,0.018,0.011,0.033,0.003,0.016,0.001,0.003,0.106,0.004,0.021,0.012,0.013,0.003,0.005,0.014], [0.048,0.027,0.019,0.002,0.028,0.002,0.008,0.017,0.041,0.014,0.012,0.022,0.031,0.005,0.045,0.100,0.004,0.031,0.033,0.002,0.029,0.006,0.021,0.032,0.008,0.038,0.317,0.007,0.017,0.004,0.018,0.005,0.003,0.004,0.002], [0.013,0.002,0.002,0.000,0.164,0.001,0.060,0.004,0.006,0.002,0.018,0.003,0.035,0.002,0.008,0.008,0.001,0.008,0.028,0.005,0.383,0.013,0.063,0.010,0.004,0.002,0.014,0.016,0.002,0.005,0.048,0.011,0.028,0.017,0.012]]
KR8877J_1 = [[0.004,0.007,0.005,0.042,0.002,0.014,0.011,0.054,0.002,0.032,0.051,0.005,0.005,0.044,0.001,0.002,0.002,0.008,0.056,0.389,0.003,0.008,0.023,0.005,0.009,0.005,0.009,0.006,0.004,0.010,0.070,0.029,0.049,0.031,0.005], [0.005,0.005,0.005,0.034,0.002,0.006,0.005,0.083,0.002,0.062,0.053,0.004,0.006,0.039,0.001,0.002,0.001,0.008,0.055,0.348,0.002,0.005,0.020,0.005,0.011,0.011,0.018,0.004,0.005,0.008,0.086,0.018,0.055,0.020,0.004], [0.001,0.001,0.024,0.009,0.013,0.003,0.002,0.499,0.006,0.011,0.022,0.011,0.007,0.006,0.006,0.048,0.000,0.008,0.013,0.009,0.004,0.002,0.007,0.000,0.002,0.053,0.009,0.007,0.030,0.000,0.030,0.001,0.009,0.021,0.123], [0.039,0.008,0.029,0.041,0.013,0.008,0.054,0.005,0.369,0.004,0.005,0.023,0.011,0.005,0.020,0.005,0.100,0.022,0.012,0.005,0.012,0.007,0.028,0.002,0.015,0.000,0.003,0.102,0.001,0.021,0.006,0.012,0.002,0.002,0.007], [0.031,0.007,0.018,0.032,0.015,0.017,0.075,0.008,0.365,0.005,0.005,0.028,0.015,0.005,0.022,0.011,0.075,0.027,0.014,0.005,0.020,0.006,0.025,0.002,0.014,0.001,0.004,0.099,0.003,0.016,0.008,0.009,0.002,0.002,0.010], [0.046,0.022,0.022,0.002,0.031,0.003,0.008,0.022,0.047,0.011,0.010,0.039,0.035,0.005,0.048,0.110,0.002,0.028,0.031,0.003,0.029,0.006,0.016,0.022,0.007,0.059,0.289,0.005,0.016,0.003,0.013,0.004,0.002,0.004,0.003], [0.019,0.004,0.002,0.000,0.134,0.004,0.088,0.006,0.004,0.003,0.016,0.007,0.037,0.004,0.016,0.014,0.002,0.014,0.026,0.005,0.342,0.019,0.049,0.024,0.004,0.003,0.021,0.009,0.005,0.009,0.049,0.012,0.017,0.026,0.006]]
KR8877J_2 = [[0.002,0.005,0.005,0.046,0.002,0.014,0.008,0.073,0.002,0.023,0.042,0.004,0.007,0.027,0.001,0.003,0.001,0.006,0.047,0.384,0.005,0.006,0.015,0.003,0.006,0.004,0.011,0.006,0.006,0.005,0.088,0.027,0.066,0.040,0.010], [0.002,0.005,0.005,0.039,0.002,0.009,0.005,0.089,0.001,0.036,0.043,0.004,0.006,0.026,0.001,0.002,0.001,0.006,0.051,0.387,0.003,0.005,0.014,0.003,0.007,0.007,0.014,0.004,0.007,0.005,0.090,0.022,0.064,0.030,0.006], [0.002,0.001,0.014,0.011,0.020,0.005,0.004,0.282,0.005,0.012,0.022,0.011,0.009,0.010,0.008,0.041,0.000,0.017,0.030,0.019,0.009,0.003,0.009,0.000,0.004,0.053,0.010,0.016,0.049,0.000,0.043,0.002,0.017,0.037,0.224], [0.028,0.015,0.029,0.039,0.023,0.020,0.097,0.008,0.239,0.004,0.009,0.021,0.019,0.008,0.017,0.008,0.082,0.023,0.025,0.012,0.020,0.010,0.037,0.003,0.016,0.001,0.003,0.110,0.003,0.019,0.012,0.014,0.004,0.005,0.015], [0.037,0.013,0.035,0.053,0.025,0.022,0.057,0.017,0.250,0.005,0.009,0.037,0.025,0.008,0.029,0.013,0.057,0.029,0.029,0.009,0.015,0.009,0.027,0.002,0.020,0.002,0.006,0.092,0.006,0.012,0.011,0.011,0.003,0.004,0.021], [0.036,0.022,0.024,0.003,0.022,0.004,0.011,0.019,0.069,0.014,0.011,0.035,0.045,0.006,0.057,0.096,0.004,0.037,0.030,0.004,0.039,0.007,0.021,0.018,0.010,0.031,0.256,0.013,0.018,0.003,0.018,0.005,0.004,0.006,0.004], [0.015,0.003,0.002,0.000,0.174,0.004,0.085,0.008,0.005,0.002,0.015,0.008,0.028,0.003,0.013,0.016,0.001,0.015,0.029,0.004,0.357,0.013,0.043,0.017,0.003,0.003,0.017,0.010,0.004,0.007,0.037,0.013,0.015,0.020,0.010]]
KR8877J_3 = [[0.005,0.006,0.006,0.055,0.002,0.017,0.009,0.076,0.003,0.035,0.032,0.007,0.005,0.050,0.001,0.002,0.002,0.011,0.050,0.391,0.002,0.005,0.018,0.003,0.012,0.009,0.009,0.005,0.005,0.012,0.068,0.032,0.032,0.017,0.006], [0.009,0.005,0.007,0.064,0.002,0.022,0.009,0.040,0.003,0.030,0.026,0.010,0.006,0.069,0.001,0.001,0.004,0.011,0.040,0.379,0.002,0.009,0.021,0.005,0.017,0.007,0.009,0.005,0.003,0.034,0.063,0.035,0.029,0.017,0.006], [0.001,0.001,0.014,0.011,0.011,0.004,0.003,0.458,0.004,0.012,0.023,0.010,0.007,0.009,0.006,0.039,0.000,0.012,0.016,0.014,0.005,0.003,0.007,0.000,0.002,0.052,0.008,0.009,0.039,0.000,0.036,0.001,0.013,0.032,0.139], [0.042,0.012,0.023,0.029,0.043,0.015,0.111,0.010,0.235,0.004,0.009,0.036,0.023,0.010,0.018,0.010,0.039,0.029,0.024,0.012,0.025,0.009,0.041,0.003,0.019,0.002,0.005,0.084,0.004,0.018,0.013,0.012,0.004,0.005,0.023], [0.030,0.008,0.017,0.033,0.011,0.020,0.103,0.009,0.289,0.004,0.006,0.030,0.022,0.007,0.021,0.011,0.108,0.031,0.013,0.008,0.020,0.006,0.023,0.002,0.018,0.001,0.004,0.102,0.005,0.012,0.007,0.007,0.002,0.003,0.009], [0.034,0.024,0.018,0.003,0.025,0.005,0.008,0.025,0.053,0.010,0.008,0.045,0.036,0.006,0.050,0.119,0.002,0.035,0.028,0.003,0.029,0.005,0.014,0.017,0.007,0.060,0.275,0.006,0.019,0.002,0.013,0.004,0.003,0.006,0.005], [0.016,0.004,0.002,0.000,0.130,0.003,0.080,0.005,0.004,0.003,0.017,0.005,0.038,0.002,0.015,0.014,0.002,0.011,0.027,0.004,0.378,0.016,0.051,0.019,0.004,0.002,0.020,0.012,0.004,0.006,0.040,0.013,0.023,0.020,0.008]] 
KR8877J_4 = [[0.006,0.004,0.007,0.052,0.002,0.012,0.005,0.066,0.002,0.043,0.036,0.007,0.007,0.051,0.001,0.001,0.002,0.008,0.037,0.401,0.002,0.008,0.017,0.004,0.013,0.010,0.014,0.004,0.004,0.016,0.077,0.021,0.038,0.018,0.006], [0.001,0.001,0.012,0.008,0.013,0.004,0.002,0.462,0.004,0.011,0.022,0.008,0.006,0.006,0.006,0.052,0.000,0.012,0.018,0.012,0.005,0.002,0.007,0.000,0.002,0.046,0.009,0.009,0.040,0.000,0.039,0.002,0.012,0.031,0.136], [0.004,0.003,0.007,0.042,0.001,0.008,0.005,0.060,0.002,0.062,0.050,0.005,0.004,0.053,0.000,0.001,0.002,0.006,0.033,0.422,0.001,0.008,0.017,0.004,0.011,0.007,0.010,0.003,0.002,0.013,0.065,0.024,0.045,0.017,0.003], [0.029,0.015,0.032,0.058,0.018,0.013,0.067,0.012,0.287,0.006,0.010,0.025,0.016,0.007,0.017,0.009,0.059,0.023,0.026,0.011,0.016,0.006,0.033,0.003,0.017,0.001,0.006,0.118,0.004,0.014,0.009,0.012,0.004,0.003,0.012], [0.056,0.011,0.024,0.034,0.027,0.015,0.065,0.013,0.271,0.006,0.007,0.062,0.028,0.013,0.026,0.014,0.030,0.039,0.027,0.011,0.019,0.006,0.031,0.003,0.027,0.005,0.009,0.061,0.006,0.014,0.011,0.006,0.002,0.004,0.016], [0.041,0.020,0.022,0.002,0.019,0.004,0.007,0.024,0.046,0.016,0.008,0.051,0.036,0.006,0.051,0.109,0.002,0.030,0.027,0.003,0.024,0.005,0.015,0.017,0.008,0.067,0.286,0.005,0.015,0.003,0.014,0.003,0.002,0.005,0.003], [0.014,0.003,0.002,0.000,0.106,0.007,0.079,0.007,0.004,0.003,0.014,0.010,0.041,0.004,0.013,0.011,0.001,0.014,0.031,0.007,0.377,0.022,0.049,0.017,0.004,0.003,0.014,0.009,0.004,0.009,0.050,0.013,0.016,0.034,0.008]] 
KR8877J_5 = [[0.008,0.004,0.008,0.064,0.001,0.018,0.009,0.041,0.003,0.043,0.035,0.008,0.005,0.076,0.001,0.001,0.004,0.009,0.037,0.382,0.001,0.011,0.024,0.005,0.015,0.006,0.007,0.005,0.002,0.030,0.057,0.031,0.029,0.017,0.004], [0.002,0.004,0.004,0.044,0.001,0.012,0.005,0.068,0.001,0.043,0.052,0.003,0.005,0.030,0.001,0.002,0.001,0.007,0.041,0.350,0.003,0.007,0.019,0.005,0.007,0.004,0.011,0.005,0.003,0.007,0.099,0.035,0.076,0.038,0.004], [0.001,0.001,0.015,0.011,0.009,0.004,0.002,0.517,0.004,0.012,0.028,0.007,0.005,0.007,0.005,0.035,0.000,0.011,0.014,0.012,0.005,0.003,0.010,0.000,0.002,0.030,0.006,0.009,0.029,0.000,0.039,0.002,0.016,0.034,0.114], [0.026,0.010,0.036,0.064,0.011,0.009,0.052,0.010,0.360,0.004,0.007,0.022,0.015,0.005,0.017,0.006,0.067,0.019,0.017,0.008,0.013,0.006,0.026,0.002,0.015,0.001,0.004,0.121,0.003,0.011,0.006,0.010,0.003,0.002,0.011], [0.044,0.017,0.027,0.037,0.024,0.016,0.079,0.010,0.259,0.006,0.009,0.032,0.023,0.009,0.022,0.012,0.064,0.031,0.026,0.010,0.019,0.007,0.034,0.004,0.021,0.002,0.007,0.086,0.005,0.018,0.011,0.011,0.003,0.003,0.011], [0.033,0.013,0.021,0.002,0.014,0.003,0.006,0.023,0.033,0.015,0.009,0.048,0.040,0.007,0.056,0.098,0.002,0.032,0.023,0.003,0.023,0.006,0.013,0.015,0.009,0.069,0.331,0.005,0.018,0.002,0.012,0.003,0.002,0.005,0.003], [0.017,0.004,0.002,0.000,0.096,0.008,0.095,0.007,0.004,0.003,0.013,0.012,0.045,0.006,0.017,0.013,0.002,0.016,0.029,0.007,0.360,0.023,0.045,0.023,0.005,0.004,0.018,0.008,0.005,0.010,0.042,0.011,0.013,0.032,0.007]]
KR8877J_6 = [[0.007,0.004,0.007,0.082,0.002,0.023,0.009,0.029,0.003,0.024,0.024,0.008,0.006,0.062,0.001,0.001,0.005,0.009,0.032,0.391,0.002,0.012,0.020,0.005,0.016,0.004,0.006,0.006,0.002,0.037,0.061,0.041,0.033,0.019,0.006], [0.004,0.004,0.008,0.078,0.001,0.013,0.005,0.059,0.002,0.044,0.041,0.006,0.005,0.052,0.001,0.001,0.002,0.008,0.036,0.366,0.001,0.010,0.015,0.003,0.011,0.008,0.008,0.005,0.004,0.015,0.074,0.035,0.045,0.023,0.007], [0.001,0.001,0.013,0.010,0.015,0.006,0.004,0.299,0.004,0.011,0.021,0.011,0.009,0.010,0.009,0.044,0.000,0.021,0.023,0.017,0.008,0.004,0.007,0.000,0.003,0.056,0.008,0.014,0.056,0.000,0.040,0.002,0.016,0.039,0.217], [0.021,0.011,0.022,0.060,0.018,0.026,0.090,0.014,0.234,0.005,0.011,0.025,0.016,0.009,0.015,0.011,0.052,0.030,0.029,0.015,0.019,0.007,0.030,0.003,0.016,0.001,0.003,0.134,0.006,0.013,0.011,0.014,0.004,0.005,0.020], [0.031,0.012,0.027,0.036,0.023,0.020,0.053,0.018,0.269,0.006,0.008,0.029,0.036,0.007,0.029,0.021,0.046,0.030,0.028,0.009,0.023,0.007,0.027,0.003,0.020,0.002,0.010,0.098,0.010,0.009,0.016,0.009,0.004,0.005,0.018], [0.036,0.019,0.017,0.002,0.027,0.004,0.009,0.027,0.063,0.012,0.008,0.045,0.035,0.006,0.050,0.140,0.002,0.036,0.030,0.003,0.031,0.004,0.017,0.016,0.007,0.055,0.239,0.007,0.018,0.002,0.014,0.004,0.003,0.006,0.004], [0.018,0.004,0.002,0.000,0.186,0.004,0.107,0.005,0.005,0.003,0.010,0.008,0.041,0.004,0.017,0.018,0.001,0.012,0.034,0.004,0.300,0.014,0.036,0.018,0.004,0.004,0.020,0.010,0.005,0.008,0.049,0.009,0.011,0.020,0.008]]

seq = (KR8877J, KR8877J_1, KR8877J_2, KR8877J_3, KR8877J_4, KR8877J_5, KR8877J_6)

сравниваю списки, хочу обьеденить элементы которые находятся в одной категории, но сейчас могу обьеденять только полностью одинаковые списки код:

    for m in range(len(max_list_from_all_plates)-1):    #for max_list in max_list_from_all_plates:
        for n in range(min(len(max_list_from_all_plates[m]), len(max_list_from_all_plates[m+1]))): # for high_indexes in max_list:
            #print(high_indexes)
            for j in max_list_from_all_plates[m][n]:
                a = j[-1]
                c = j[0]
            for j in max_list_from_all_plates[m+1][n]:
                b = j[-1]
                d = j[0]
            #print([a[-1] for a in max_list_from_all_plates[m][n]], [b[-1] for b in max_list_from_all_plates[m+1][n]])

            #if [a[-1] for a in max_list_from_all_plates[m][n]] == [b[-1] for b in max_list_from_all_plates[m+1][n]]:
                #suma = [c[0] + d[0] for c, d in zip(max_list_from_all_plates[m][n] , max_list_from_all_plates[m+1][n])]
            for a in max_list_from_all_plates[m][n]:
                #print(a[-1])
                for g in max_list_from_all_plates[m+1][n]:
                    #print(g[-1])
                    if a[-1] == g[-1]:
                        print('test+', a[-1], g[-1], a[0], g[0])
                        t = a[0] 
                        t += g[0]
                    else:
                        print("test-", a[-1], g[-1])


output :


test+ [0.064, 0.052, 0.36, 0.067, 0.121] [0.06, 0.09, 0.234, 0.052, 0.134] ['3', '6', '8', 'G', 'S'] ['3', '6', '8', 'G', 'S']
['6', '8', 'G', 'S'] ['6', '8', 'S']
test ['6', '8', 'G', 'S'] ['6', '8', 'S']
['E', 'F', 'P', 'R'] ['8', 'F', 'P', 'R']
test ['E', 'F', 'P', 'R'] ['8', 'F', 'P', 'R']
['4', '6', 'K'] ['4', '6', 'K']
test+ [0.096, 0.095, 0.36] [0.186, 0.107, 0.3] ['4', '6', 'K'] ['4', '6', 'K']

как Вы видите списки имеют общие элементы test [‘7’, ‘A’, ‘J’, ‘V’, ‘X’] [‘3’, ‘7’, ‘D’, ‘J’, ‘V’] 7 и 7, J и V

хочу иметь возможность обьеденить их.

ну и вывести список в котором будут все варианты вместе как бы смержены (merge)

[‘7’, ‘A’, ‘J’, ‘V’, ‘X’] + [‘3’, ‘7’, ‘D’, ‘J’, ‘V’] = [‘7’, ‘A’, ‘J’, ‘V’, ‘X’, ‘3’, ‘D’]

ну и оставить их значения на пример [[[‘7’], [0.096]], [[‘A’], [0.096]],и т.д.

вроде бы должно работать, но не знаю почему не обновляеться значение: if a[-1] == g[-1]: print(‘test+’, a[-1], g[-1], a[0], g[0]) t = a[0] t += g[0]

test+ K K 0.36 0.3

остаеться таким же, хотя по идее должен возрастать

Перемещено xaizek из general



Последнее исправление: katemisik (всего исправлений: 5)

Ответ на: комментарий от ZogG

мне не подходит использование словаря..

пробую сделать с примера, но пока не работает

a = [['jane', '1', '120'], ['bob', '3', '35'], ['joe', '5', '70']]
b = [['jane', '2', '240'], ['bob', '1', '12'], ['joe', '1', '100']]
c = [['jane', '5', '45'], ['bob', '0', '0'], ['joe', '2', '30']]

def summation(*args):
    d = {}
    for name, v1, v2 in [item for sublist in args for item in sublist]:
        v1, v2 = int(v1), int(v2)
        try:
            d[name] = (d[name][0]+v1, d[name][1]+v2)
        except KeyError:
            d[name] = (v1, v2)

    return d

print summation(a,b,c)

katemisik
() автор топика
Ответ на: комментарий от katemisik

Не надо использовать списки там где надо использовать множества.

Но если очень хочется - перед включением в список можно проверять есть ли там такой элемент.

AntonI ★★★★
()
Ответ на: комментарий от katemisik

Мне вот интересно, ты принципиально делаешь свой код нечитабельным используя списки как единственную структуру для всего?

Aswed ★★★★★
()

Алсо язабан по причине тупняк. Автор целенаправленно делает дичь уже несколько тредов подряд и полностью игнорирует советы лоровцев, а так же орфографию(см. елементы)

Aswed ★★★★★
()
Ответ на: комментарий от katemisik

Тебе НЕ нужно в виде списков. Во внутреннем представлении твоей проги у тебя должны входные данные сериализовываться в какую-то понятную структуру, а на выходе обратно в список или что там ждут от твоего скрипта. Для этого уже давно изобрели пидантик или даже dataclass в стандартной библиотеке питона. У тебя не должно быть вот таких строк

[a[-1] for a in max_list_from_all_plates[m][n]], [b[-1] for b in max_list_from_all_plates[m+1][n]]

в коде отвечающем за логику

Aswed ★★★★★
()
Ответ на: комментарий от katemisik

Ну ты можешь лопатой забивать гвозди и удалять комменты с ответом, но умнее от этого не станешь 🤷‍♂️

ZogG
()
Ответ на: комментарий от anonymous

ну вот пусть эта альфа ей и помогает

Так она за неё код и форматировала, пока авторша не научилась в разметку. Хотя, глядя на ОП, это не помогает.

vvn_black ★★★★★
()

Извените, но песать надо правельно: объединить.

akk ★★★★★
()
Ответ на: комментарий от katemisik

Поддерживаю, доступ по индексу в списке удобнее чем по ключу или как то еще

XoFfiCEr ★★☆☆
()

вывести список в котором будут все варианты вместе как бы смержены (merge)

>>> a,b = ['7', 'A', 'J', 'V', 'X'], ['3', '7', 'D', 'J', 'V']
>>> list(set(a) | set(b))
['J', 'D', 'V', 'X', 'A', '7', '3']

оставить их значения

а какие у них были значения?

anonymous
()
Ответ на: комментарий от XoFfiCEr

Есть базовые виды контейнеров - вектор, список, ассоциативный массив (разные), множество. Все они предназначены для решения разных задач, умение использовать правильный контейнер в нужно месте - признак профессионализма, попытка решить все задачи на одном контейнере - признак незнания базовых вещей.

Никакие слова об универсализме и пр. тут оправданием не являются.

AntonI ★★★★
()
Ответ на: комментарий от ZogG

гы-гы

ты можешь лопатой забивать гвозди

я так и делаю, когда молотка под рукой нет // т.е. практически постоянно

но мне-то молоток и не положен

а вот кто и зачем ограничивает выбор инструментов в программировании?!

anonymous
()

Если бы тут был небольшой, но достаточный для понимания пример входных данных и желаемого результата, всем было бы проще.

Nervous ★★★★★
()
Ответ на: комментарий от AntonI

Я даже когда получаю данные из БД в результате запроса, храню эти данные в списке а не в словаре... Привычка уже.

XoFfiCEr ★★☆☆
()
Ответ на: комментарий от XoFfiCEr

Нет.

ЗЫ. Небольшой пример - найти число разных чисел в случайной последовательности.

#!/usr/bin/python2
# repeat-list.py

import random, time
L, t0 = [], time.time()

for i in xrange(10000):
    x = random.randint(0,10000)
    if not x in L: L.append(x)

print len(L), time.time()-t0
$ ./repeat-list.py 
6354 1.04331302643
#!/usr/bin/python2
#repeat-set.py

import random, time
S, t0 = set(), time.time()

for i in xrange(10000):
    x = random.randint(0,10000)
    S.add(x)

print len(S), time.time()-t0

$ ./repeat-set.py 
6303 0.0589830875397

Даже на такой небольшой последовательности по производительности разница в 20 раз. Потому что у первого решения сложность O(N^2), а у второго O(N log(N)). Добро пожаловать в увлекательный мир алгоритмов;-)

AntonI ★★★★
()
Последнее исправление: AntonI (всего исправлений: 2)
Ответ на: комментарий от Nervous

Если бы тут был небольшой, но достаточный для понимания пример входных данных и желаемого результата, всем было бы проще.

Золотые слова.

shleemypants
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.