列表中的列表的随机播放功能

时间:2019-06-30 11:17:52

标签: python list random shuffle

尝试使用一个枚举函数同时添加两个列表并同时对两个列表的元素进行随机播放

我正在使用两个功能:

  1. 将list_b附加到list_a
  2. 改组list_a并使用枚举函数进行索引。

此外,我还想在新的改组的list_a中改组list_b的元素,并使用相同的枚举函数以相同的数字顺序索引两个列表的项。下面是我到目前为止的立场。 List_a = [“ alpha”,“ beta”,“ romeo”,“ nano”,“ charlie”]     list_b = [1,2,3,4,5,6,7]     从随机导入洗牌     list_a.append(list_b)     洗牌(list_a)     打印(list_a)

for idx, val in enumerate(list_a, start=1):
    print(idx, val)

输出

['nano', 'charlie', 'alpha', 'beta', [1, 2, 3, 4, 5, 6, 7], 'romeo']

1 nano
2 charlie
3 alpha
4 beta
5 [1, 2, 3, 4, 5, 6, 7]
6 romeo

3 个答案:

答案 0 :(得分:2)

我可能会丢失一些东西,但是您可以先随机整理list_b,然后再将其附加到list_a

from random import shuffle

list_a = ["alpha", "beta", "romeo", "nano", "charlie"]
list_b = [1, 2, 3, 4, 5, 6, 7]

shuffle(list_b)

list_a.append(list_b)
shuffle(list_a)
print(list_a)

for idx, val in enumerate(list_a, start=1):
    print(idx, val)

输出

['alpha', 'charlie', 'nano', [1, 4, 5, 2, 7, 3, 6], 'beta', 'romeo']
1 alpha
2 charlie
3 nano
4 [1, 4, 5, 2, 7, 3, 6]
5 beta
6 romeo

答案 1 :(得分:0)

尝试一下:

# append
from random import sample, shuffle
list_a.append(list_b)

# shuffle the list within the list
for i, v in enumerate(list_a): 
     if isinstance(v, list):
          list_a[i] = sample(v, len(v))

# shuffle the list
list_a = sample(list_a, len(list_a))

# unpack elements
list_c = []
for e in list_a:
    if not isinstance(e, list):
        list_c.append(e)
        continue
    for v in e: 
        list_c.append(v)

# print
for i, v in enumerate(list_c): 
    print(i, v)

答案 2 :(得分:0)

您可以通过基本概念if-elsetype轻松获得结果。我在您的代码中添加了2行:-

list_a = ["alpha","beta","romeo","nano","charlie"]
list_b = [1,2,3,4,5,6,7]
from random import shuffle
list_a.append(list_b)
shuffle(list_a)
print(list_a)
print()

for idx, val in enumerate(list_a, start=1):
    if type(val) is list:   # This is newly added.
        shuffle(val)
        print(idx, val)
    else:   
        print(idx, val)

希望对您有帮助。