【问题标题】:Python Permutations unexpected behavior?Python排列意外行为?
【发布时间】:2022-11-03 19:34:51
【问题描述】:

鉴于以下示例:

from itertools import permutations
p=permutations("abc", 2)

def func():
  for i in p:
      print("values=", i)
        

print("First use case:") 
func()

print("Second use case:") 
func()

print("The End!")

输出:

First use case:
values= ('a', 'b')
values= ('a', 'c')
values= ('b', 'a')
values= ('b', 'c')
values= ('c', 'a')
values= ('c', 'b')
Second use case:
The End!

问题是关于第二个功能呼叫,为什么不打印值?!

【问题讨论】:

    标签: python permutation


    【解决方案1】:

    p 是和迭代器,这意味着一旦您完成迭代它,其中就没有更多元素了。您将不得不重新生成迭代器。

    喜欢:

    def func():
      p=permutations("abc", 2)
      for i in p:
          print("values=", i)
    

    如果您遇到迭代器是随机生成的情况并且您想使用相同的随机元素,那么您将不得不将它们移动到类似列表的位置。

    例子:

    from numpy.random import permutation
    import numpy as np
    p =  list(iter(np.random.randint(0,10,10)))
    
    def func():
      for i in p:
          print("values=", i)
    

    【讨论】: