如何将具有相同索引的多个列表中的项目附加到其原始列表中?

How to append items in multiple lists having same index into their original lists?

我有任意数量的列表,这里以 3 个为例。这些列表将具有相同数量的项目,我想将具有相同索引的项目附加到它们的原始列表中。这必须以一定的概率完成。

import random

individuals = 6
lists = 3

L1 = ['A', 'A', 'A', 'A', 'a', 'a']
L2 = ['B', 'B', 'B', 'B', 'b', 'b']
L3 = ['C', 'C', 'C', 'C', 'c', 'c']

for i in range(1, lists+1):
    for j in range(0, 6): 
      if random.random() <= 0.8:  
        ((eval(f'L{i}'))).append((eval(f'L{i}{[j]}')))
      else:
        pass

for i in range(1, lists+1):
    print(eval(f'L{i}'))

我想要的是,如果L1[0]、L2[0]和L3[0]满足某个概率,则将它们追加到它们的原始列表中。然后我们对 L1[0]、L2[1] 和 L3[2] 等执行相同的操作,直到我们 运行 出原始项目(在本例中为 6)。如果不满足概率,则不会附加具有相同索引的所有项目。

当前结果最后给出了大小不等的列表。列表的大小应该相等,因为我需要的是所有列表要么立即附加,要么不附加。

当前结果:

['A', 'A', 'A', 'A', 'a', 'a', 'A', 'A', 'a', 'a']
['B', 'B', 'B', 'b', 'b', 'b', 'B', 'B', 'B', 'b', 'b']
['C', 'C', 'C', 'c', 'c', 'c', 'C', 'C', 'C', 'c', 'c']

IIUC,只需要将两个for循环的顺序倒过来即可:

import random

individuals = 6
lists = 3

L1 = ['A', 'A', 'A', 'A', 'a', 'a']
L2 = ['B', 'B', 'B', 'B', 'b', 'b']
L3 = ['C', 'C', 'C', 'C', 'c', 'c']

for j in range(0, 6): 
    p = random.random()             # Random probability (same for all lists)
    if p <= 0.8:
        for i in range(1, lists+1): # all list get appended
            ((eval(f'L{i}'))).append((eval(f'L{i}{[j]}')))

for i in range(1, lists+1):
    print(eval(f'L{i}'))

输出

['A', 'A', 'A', 'A', 'a', 'a', 'A', 'A', 'A', 'a', 'a']
['B', 'B', 'B', 'B', 'b', 'b', 'B', 'B', 'B', 'b', 'b']
['C', 'C', 'C', 'C', 'c', 'c', 'C', 'C', 'C', 'c', 'c']
​

我不确定我是不是understand.Maybe你这么说。

for j in range(0, 6):
      if random.random() <= 0.8:
          for i in range(1, lists + 1):
              ((eval(f'L{i}'))).append((eval(f'L{i}{[j]}')))
      else:
        pass