【问题标题】:Iterating through multiple arguments in a function?遍历函数中的多个参数?
【发布时间】:2023-01-26 03:51:35
【问题描述】:

我将如何遍历此函数以便它尝试所有可能的组合一种,b,C,d是一系列数字,其中:

一种= 20 至 40,b= 80 到 100,C= 100 到 120,d= 120 到 140


def euler(a,b,c,d):
    my_dict = {'A1':[],'A2':[],'A3':[],'A4':[],'Number': []}
    y = a**5 + b**5 + c**5 + d**5
    for n in range(140,161):
        if n**5 == y:
            my_dict['A1'].append(a)
            my_dict['A2'].append(b)
            my_dict['A3'].append(c)
            my_dict['A4'].append(d)
            my_dict["Number"].append(n)
            return my_dict  
        else:
            pass
    
    

本质上我想遍历所有组合以找到匹配项一种 b C和d.

有什么想法吗?提前致谢!

【问题讨论】:

  • 你在找itertools.combinations吗?
  • 或 itertools.product() 因为我真的不认为 .combinations() 是你想要的,因为你有不同的列表要组合。
  • @JonSG 你是对的,我评论太快了哈哈

标签: python


【解决方案1】:

这是一个简单的实现(感谢@JonSG,它是product,而不是combinations!)

from itertools import product

def euler(a,b,c,d):
    my_dict = {'A1':[],'A2':[],'A3':[],'A4':[],'Number': []}
    y = a**5 + b**5 + c**5 + d**5
    for n in range(140,161):
        if n**5 == y:
            my_dict['A1'].append(a)
            my_dict['A2'].append(b)
            my_dict['A3'].append(c)
            my_dict['A4'].append(d)
            my_dict["Number"].append(n)
            return my_dict  
        else:
            pass

A = range(20, 41)
B = range(80, 101)
C = range(100, 121)
D = range(120, 141)

for a, b, c, d in product(A, B, C, D):
    res = euler(a, b, c, d)
    if res:
        print(res)

【讨论】:

    【解决方案2】:

    你想要的操作是笛卡尔积. itertools.product 是您可以使用的功能

    for a, b, c in itertools.product(range(20,40), range(80, 100), range(100, 120)
    

    (但是,组合的数量很快变得不切实际,也许您需要另一种方法)

    【讨论】:

      猜你喜欢
      • 2014-05-13
      • 2014-06-05
      • 2016-07-21
      • 2011-10-09
      • 1970-01-01
      • 2018-08-05
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多