亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

將每行的總數與其余行進行比較

將每行的總數與其余行進行比較

aluckdog 2022-07-12 15:16:53
將下面每一行的值與其余行進行比較的最佳方法是什么。假設我想找到 2 行或更多行的總數相同(if 語句除外)。下面的每個索引都源自一個隨機函數。導入隨機 main_list = [random.randint(1,9) for iter in range(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 回答

?
滄海一幻覺

TA貢獻1824條經驗 獲得超5個贊

而不是 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))


查看完整回答
反對 回復 2022-07-12
?
RISEBY

TA貢獻1856條經驗 獲得超5個贊

我想你正在尋找這樣的東西:


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))


查看完整回答
反對 回復 2022-07-12
?
夢里花落0921

TA貢獻1772條經驗 獲得超6個贊

將行添加到數據框并使用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)


查看完整回答
反對 回復 2022-07-12
?
慕的地10843

TA貢獻1785條經驗 獲得超8個贊

首先,我建議將總數收集在一個稍微不那么笨重的數據結構中,比如一個列表:


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停止在 24 處):


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

您的問題的答案將類似于:


from collections import Counter

from random import randint


main_list = [randint(0, 10) for _ in range(25)]


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


duplicate_totals = {t: c for t, c in Counter(row_total).items() if c > 1}


print(main_list)

# a dictionary of totals that show up twice or more often

print(duplicate_totals)

結果看起來像:


[4, 9, 1, 2, 0, 6, 8, 6, 4, 3, 0, 10, 0, 9, 1, 0, 10, 7, 10, 7, 0, 6, 2, 1, 7]

{17: 2}


查看完整回答
反對 回復 2022-07-12
  • 4 回答
  • 0 關注
  • 137 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號