Python程式獲取所有和為s的子集


當需要獲取所有和為特定值's'的子集時,定義一個方法遍歷列表並獲取列表的所有組合,如果組合的和匹配目標值,則將其列印到控制檯。

示例

下面是演示

from itertools import combinations

def sub_set_sum(size, my_array, sub_set_sum):

   for i in range(size+1):
      for my_sub_set in combinations(my_array, i):

         if sum(my_sub_set) == sub_set_sum:
            print(list(my_sub_set))

my_size = 6
my_list = [21, 32, 56, 78, 45, 99, 0]
print("The list is :")
print(my_list)
subset_sum = 53
print("The result is :")
sub_set_sum(my_size, my_list, subset_sum)

輸出

The list is :
[21, 32, 56, 78, 45, 99, 0]
The result is :
[21, 32]
[21, 32, 0]

解釋

  • 將所需的包匯入到環境中。

  • 定義一個名為'sub_set_sum'的方法,該方法將列表的大小和列表作為引數。

  • 它遍歷列表並使用'combinations'方法獲取所有組合。

  • 如果和與特定值相同,則將其轉換為列表並在控制檯顯示。

  • 在方法外部,定義一個大小。

  • 定義一個列表並在控制檯顯示。

  • 定義一個子集值。

  • 透過傳遞所需引數來呼叫該方法。

  • 輸出顯示在控制檯上。

更新於: 2021年9月21日

586 次瀏覽

開啟你的 職業生涯

完成課程獲得認證

開始學習
廣告