Skip to main content
 首页 » 编程设计

python之为 for 循环随机化 2 个列表

2025年05月04日9落叶无声

假设我有 2 个相同大小的列表以及以下代码:

list1 = ['tom', 'mary', 'frank', 'joe'] 
list2 = [1, 2, 3, 4] 
 
for names, numbers in zip(list1, list2): 
    print names, numbers 

我如何为 for 循环的每次迭代使用每个列表中的随机索引?

沿着类似的注释,如果我有 2 个不同大小的列表:

list1 = ['tom', 'mary', 'frank', 'joe', 'john', 'barry'] 
list2 = [1, 2, 3, 4] 

我如何像第一个示例一样使用随机索引,但是这一次,一旦它到达 list2 之外的项目的第一个索引,就开始为 list1 中的其余项目再次随机化 list2 的索引?在这种情况下,zip 不再是正确的使用方法吗?

frank 3 
tom 4 
john 2 
mary 1 
barry 4 
joe 2 

^期望的输出(但完全随机)

请您参考如下方法:

这可行,但有点冗长:

import random 
 
def shuffled(seq): 
  copy = list(seq) 
  random.shuffle(copy) 
  return copy 
 
def rand_repeat(seq): 
  while True: 
    for el in shuffled(seq): 
      yield el 
 
list1 = ['tom', 'mary', 'frank', 'joe', 'john', 'barry'] 
list2 = [1, 2, 3, 4] 
 
print zip(shuffled(list1), rand_repeat(list2))