如何将具有相同索引的多个列表中的项目附加到其原始列表中?
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
我有任意数量的列表,这里以 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