【问题标题】:How to return the indexes of a pair from 2 separate lists?如何从 2 个单独的列表中返回一对索引?
【发布时间】:2021-03-07 10:05:49
【问题描述】:

我是一个初学者,正在尝试用 Python 练习我的技能。

对于我正在练习的问题,我必须返回一个显示以下配对索引的列表:Girl and Boy Set A、Girl and Boy Set B、Girl and Boy Set C。

  • 如果女孩 = 3,那么女孩就是女孩 A。

  • 如果女孩 = 6,那么女孩就是女孩 B。

  • 如果 Girl = 12,则 Girl 是 Girl C。

  • 如果男孩 = 1,那么男孩就是男孩 A。

  • 如果男孩 = 4,那么男孩就是男孩 B。

  • 如果 Boy = 8,则 Boy 是 Boy C。

我已经确定了 Girls 和 Boys 的索引,但我不确定如何将它们配对并打印配对的索引。

这是我的代码:

arr_girls = [3, 6, 12, 3, 6, 12]
arr_boys = [1, 4, 8, 3, 4]

def girls_and_boys (arr_girls, arr_boys):
    for i in arr_girls:
        if i == 3:
            print("Index of Girl A: ", arr_girls.index(3))
        elif i == 6:
            print("Index of Girl B: ", arr_girls.index(6))
        elif i == 12:
            print("Index of Girl C: ", arr_girls.index(12))

    for i in arr_boys:
        if i == 1:
            print("Index of Boy A: ", arr_boys.index(1))
        elif i == 4:
            print("Index of Boy B: ", arr_boys.index(4))
        elif i == 8:
            print("Index of Boy C: ", arr_boys.index(8))

print(girls_and_boys(arr_girls, arr_boys))

预期输出:返回显示以下对的索引的列表:Girl and Boy Set A、Girl and Boy Set B、Girl and Boy Set C。

0,0
1,1
2,2
4,4

【问题讨论】:

  • 这是完整的问题吗?我无法理解您要达到的目标。
  • @JacksonPro 我已经修改了问题
  • 您的预期输出与您提供的代码不匹配。你怎么得到4?你的输出只给出 0, 1, 2
  • @JacksonPro 如问题中所述,我不确定如何进一步处理当前代码以实现预期输出。
  • @JacksonPro 4,4 分别来源于 arr_girls 和 arr_boys 的第 5 个元素

标签: python arrays python-3.x list


【解决方案1】:

对于我正在练习的问题,我必须返回一个列表 显示以下配对的索引:Girl and Boy Set A、Girl and 男孩组 B,女孩和男孩组 C。

我无法真正理解您要做什么,但根据预期的输出,解决方案可能是确定两个数组的最小长度,然后简单地打印。
如果在预期的输出中 (3,3) 被跳过,因为你忘了写它:

arr_girls = [3, 6, 12, 3, 6, 12]
arr_boys = [1, 4, 8, 3, 4]

def girls_and_boys(arr_girls, arr_boys):
    upper_limit = len(arr_girls)
    if len(arr_boys) < upper_limit:
        upper_limit = len(arr_boys)
    for i in range(upper_limit):
        print(i, i)

girls_and_boys(arr_girls, arr_boys)

如果在预期的输出中 (3,3) 被跳过,因为 arr_girls[3]=3arr_boys[3]=3 解决方案更改为:

def girls_and_boys(arr_girls, arr_boys):
    upper_limit = len(arr_girls)
    if len(arr_boys) < upper_limit:
        upper_limit = len(arr_boys)
    for i in range(upper_limit):
        boy = arr_boys[i]
        girl = arr_girls[i]
        if boy != girl:
            print(i, i)

【讨论】:

    【解决方案2】:

    您可以使用内置的zipenumerate 来获得所需的输出:

    arr_girls = [3, 6, 12, 3, 6, 12]
    arr_boys = [1, 4, 8, 3, 4]
    
    def girls_and_boys(arr_girls, arr_boys):
        for idx, val in enumerate(zip(arr_girls, arr_boys)):
            if val[0] == 3 and val[1] == 1:
                print(f"{idx}, {idx}")
            elif val[0] == 6 and val[1] == 4:
                print(f"{idx}, {idx}")
            elif val[0] == 12 and val[1] == 8:
                print(f"{idx}, {idx}")
    
    girls_and_boys(arr_girls, arr_boys)
    

    输出将是:

    0, 0
    1, 1
    2, 2
    4, 4
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-06-13
      • 2021-12-24
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-11-15
      相关资源
      最近更新 更多