比较每行与其余行的总数

时间:2020-01-29 06:16:07

标签: python list

将下面每一行的值与其余行进行比较的最佳方法是什么。假设我想找到2个或更多行具有相同的总数(除了if语句)。

下面的每个索引均源自随机函数。

随机导入 main_list = [random.randint(1,9)用于范围(25)的迭代]

row_1_total = main_list[0] + main_list[1] + main_list[2] + main_list[3] + main_list[4]
row_2_total = main_list[5] + main_list[6] + main_list[7] + main_list[8] + main_list[9]
row_3_total = main_list[10] + main_list[11] + main_list[12] + main_list[13] + main_list[14]
row_4_total = main_list[15] + main_list[16] + main_list[17] + main_list[18] + main_list[19]
row_5_total = main_list[20] + main_list[21] + main_list[22] + main_list[23] + main_list[24]

print("Total of row 1 >>>", row_1_total)
print("Total of row 2 >>>", row_2_total)
print("Total of row 3 >>>", row_3_total)
print("Total of row 4 >>>", row_4_total)
print("Total of row 5 >>>", row_5_total)

4 个答案:

答案 0 :(得分:0)

将行添加到数据框并使用df.diff().eq(0)或任何比较

import pandas as pd
row_1_total=3
row_2_total=6
row_3_total=7
row_4_total=5
row_5_total=5
df= pd.DataFrame([row_1_total,row_2_total,row_3_total ,row_4_total ,row_5_total  ])
df.diff().eq(0)
print(df.diff().eq(0))
duplicat = df[df.duplicated()]
print(duplicat)

答案 1 :(得分:0)

将总和保留在列表中,而不是5个变量。如果您执行循环操作,则可以在每次迭代中获取列表的一部分,并将代码减少为

main_list = [random.randint(1, 9) for _ in range(25)]
sums = [sum(main_list[i:i+4]) for i in range(0, len(main_list), 5)]
for i in range(len(sums)):
    print(f"Total of row {i + 1} >>>", sums[i])

现在您可以将sums放在set()中并比较大小

sums_set = set(sums)
print(len(sums_set) == len(sums))

答案 2 :(得分:0)

首先,我建议以略微笨拙的数据结构(如列表)收集总数:

const inputConfig = {
    mimeType: image.type,
    gcsSource: {
        uri: gcsSourceUri,
    },
};
const outputConfig = {
    gcsDestination: {
        uri: `${bucketUrl}${downloadFilePath}`,
    },
};
const features = [
    {
        type: 'DOCUMENT_TEXT_DETECTION',
    }
];
const request = {
    requests: [
        {
            inputConfig: inputConfig,
            features: features,
            outputConfig: outputConfig,
        },
    ],
};
const [operation] = await client.asyncBatchAnnotateFiles(request);

第二,您可以通过这样计算一行的总数来避免很多重复(假设const [data] = await client.documentTextDetection({ image: { content: imageBytes } }); 停在24点):

row_total = []
row_total.append(main_list[0] + main_list[1] + main_list[2] + main_list[3] + main_list[4])
row_total.append(main_list[5] + main_list[6] + main_list[7] + main_list[8] + main_list[9])
row_total.append(main_list[10] + main_list[11] + main_list[12] + main_list[13] + main_list[14])
row_total.append(main_list[15] + main_list[16] + main_list[17] + main_list[18] + main_list[19])
row_total.append(main_list[20] + main_list[21] + main_list[22] + main_list[23] + main_list[24])
print(row_total[3])

您的问题的答案将类似于:

main_list

结果类似于:

row_total = [sum(x[0+n:3+n]) for n in range(0, len(x), 3)]]

答案 3 :(得分:0)

我认为您正在寻找这样的东西:

main_list = [[5,4,6], [1, 2, 3, 4], [4,5,6]]
total = []
for row in main_list:
    total.append(sum(row))


for t in total:
    print("value : ",t, " is at indices : ", total.indices(t))
相关问题