【问题标题】:how do you iterate each item in array with every item in another array in python?你如何用python中另一个数组中的每个项目迭代数组中的每个项目?
【发布时间】:2015-03-10 20:45:51
【问题描述】:

您好,我正在尝试用另一个数组迭代 1 个数组。例如,将列表 1 中的每个项目替换为列表 2 中的每个项目。

list1 = ['physics', 'chemistry', 1997, 2000];

list2 = [1, 2, 3, 4, 5, 6, 7 ];

打印输出:

1 chemistry 1997 2000
2 chemistry 1997 2000
...
physics 1 1997 2000
physics 2 1997 2000
...
physics chemistry 1 2000
physics chemistry 2 2000

我怎么写这样的东西?

谢谢

【问题讨论】:

  • 我在打印输出中没有看到图案...
  • list1 中的 3 个元素和 list2 中的 1 个元素是否按任何顺序排列?
  • @AdamHughes -- 我花了一段时间才弄明白,但有一个模式(见我的回答),而且真的...... OP 解释它做得很好。 “对于 list1 中的每个项目,将其替换为 list2 中的每个项目”。 “打印输出”的格式可以更好一些,但是 ...
  • 如果您向我们展示到目前为止您尝试解决此问题的方法,这个问题可能会做得更好。 1)它会让你更清楚你想要做什么,2)它会帮助我们知道你在做什么,以便我们可以更好地帮助你。我在下面有一个答案(但我删除了它,因为在我看到你自己做出努力之前我不想回答家庭作业问题)。 提示,想想你需要做什么——复制输入列表,然后用不同的值替换其中的一个字段,重复直到不再需要替换。

标签: python arrays list loops


【解决方案1】:

遍历list2中的项目,然后是list1中的位置:

for item in list2:
    for position in range(len(list1)):
        print(list1[:position] + [item] + list1[position + 1:])

输出:

[1, 'chemistry', 1997, 2000]
['physics', 1, 1997, 2000]
['physics', 'chemistry', 1, 2000]
...
['physics', 'chemistry', 1997, 4]
[5, 'chemistry', 1997, 2000]
['physics', 5, 1997, 2000]
...
['physics', 7, 1997, 2000]
['physics', 'chemistry', 7, 2000]
['physics', 'chemistry', 1997, 7]

【讨论】:

  • 否决票的解释?我认为这符合 OP 的预期结果。
  • 感谢 marius,但有没有办法在列表 1 中的同一项目上停留,然后再转到第二个项目?
  • 是的,如果你交换 for 循环,循环遍历第一个循环中的位置,然后循环第二个循环中的 item
  • 很好,但请去掉list1[(position + 1):] 中多余的括号——这是唯一阻止我支持这个优秀答案的缺陷!-)
  • @AlexMartelli 我通常在切片时使用这些括号,因为我认为它使冒号前后的内容更清楚,即为了可读性。如果您认为有帮助,很高兴放弃它们。
【解决方案2】:

对于那些需要这样的东西的人,这里是代码:

l = [1,2,3,4,5]
letters = [‘a’, ‘b’, ‘c’]

for i in range(len(l)):
  for ch in letters:
    ll = l[0:i]
    ll.append(ch)
    ll += l[i+1:]
    print ll



**Output:**       
['a', 2, 3, 4, 5]
['b', 2, 3, 4, 5]
['c', 2, 3, 4, 5]
[1, 'a', 3, 4, 5]
[1, 'b', 3, 4, 5]
[1, 'c', 3, 4, 5]
[1, 2, 'a', 4, 5]
[1, 2, 'b', 4, 5]
[1, 2, 'c', 4, 5]
[1, 2, 3, 'a', 5]
[1, 2, 3, 'b', 5]
[1, 2, 3, 'c', 5]
[1, 2, 3, 4, 'a']
[1, 2, 3, 4, 'b']
[1, 2, 3, 4, 'c']

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-07-09
    • 2020-04-13
    • 1970-01-01
    • 2021-04-01
    • 2019-11-17
    • 2011-08-07
    相关资源
    最近更新 更多