Python 如何在列表上重复操作

Python 如何在列表上重复操作,python,python-3.x,for-loop,Python,Python 3.x,For Loop,我想有一个4个字母的列表,然后我想随机选取其中的两个元素,将它们合并在一起,并将其作为新元素添加到原始列表中。这样我就列了一个新的清单。现在,我想从新列表中重复相同的过程,这意味着从新列表中随机地将两个元素合并在一起,并再次创建一个新列表。到目前为止,我已经迈出了第一步: import random num = 2 aList = ['A','B','C','D'] newList = [] newList+=random.sample(aList, num) L = [''.join(newL

我想有一个4个字母的列表,然后我想随机选取其中的两个元素,将它们合并在一起,并将其作为新元素添加到原始列表中。这样我就列了一个新的清单。现在,我想从新列表中重复相同的过程,这意味着从新列表中随机地将两个元素合并在一起,并再次创建一个新列表。到目前为止,我已经迈出了第一步:

import random
num = 2
aList = ['A','B','C','D']
newList = []
newList+=random.sample(aList, num)
L = [''.join(newList[0:2])]+aList
print(L)

我想知道如何重复这个过程,比如说再重复5次。

Mya您可以创建一个方法:

import random
num = 2
aList = ['A','B','C','D']
def randomizeList(list):
    newList = []
    newList+=random.sample(list, num)
    L = [''.join(newList[0:2])]+list
    return L
现在,您可以根据需要多次调用此方法:

list = randomizeList(randomizeList(randomizeList(randomizeList(aList))))


还有……

Mya您可以创建一个方法:

import random
num = 2
aList = ['A','B','C','D']
def randomizeList(list):
    newList = []
    newList+=random.sample(list, num)
    L = [''.join(newList[0:2])]+list
    return L
现在,您可以根据需要多次调用此方法:

list = randomizeList(randomizeList(randomizeList(randomizeList(aList))))


和……

通过创建函数:

import random

def randMerge(l:list, count:int) -> list:
    """Returns the input list expanded by a joined element consisting of
    count elements from itself (no repeats allowed)"""
    return l + [''.join(random.sample(l,k=count))]
并反复称之为:

num = 2
aList = ['A','B','C','D']
newList = aList[:]
for _ in range(6):
    print(newList)
    newList = randMerge(newList,num)
print(newList)
输出:

['A', 'B', 'C', 'D']
['A', 'B', 'C', 'D', 'DC']
['A', 'B', 'C', 'D', 'DC', 'ADC']
['A', 'B', 'C', 'D', 'DC', 'ADC', 'CD']
['A', 'B', 'C', 'D', 'DC', 'ADC', 'CD', 'CDA']
['A', 'B', 'C', 'D', 'DC', 'ADC', 'CD', 'CDA', 'CDC']
['A', 'B', 'C', 'D', 'DC', 'ADC', 'CD', 'CDA', 'CDC', 'ADCCDC']

通过创建函数:

import random

def randMerge(l:list, count:int) -> list:
    """Returns the input list expanded by a joined element consisting of
    count elements from itself (no repeats allowed)"""
    return l + [''.join(random.sample(l,k=count))]
并反复称之为:

num = 2
aList = ['A','B','C','D']
newList = aList[:]
for _ in range(6):
    print(newList)
    newList = randMerge(newList,num)
print(newList)
输出:

['A', 'B', 'C', 'D']
['A', 'B', 'C', 'D', 'DC']
['A', 'B', 'C', 'D', 'DC', 'ADC']
['A', 'B', 'C', 'D', 'DC', 'ADC', 'CD']
['A', 'B', 'C', 'D', 'DC', 'ADC', 'CD', 'CDA']
['A', 'B', 'C', 'D', 'DC', 'ADC', 'CD', 'CDA', 'CDC']
['A', 'B', 'C', 'D', 'DC', 'ADC', 'CD', 'CDA', 'CDC', 'ADCCDC']
试试这个

import random
aList = ['A','B','C','D']
for i in range(5): aList.append(''.join(random.sample(aList, num)))
print(aList)
试试这个

import random
aList = ['A','B','C','D']
for i in range(5): aList.append(''.join(random.sample(aList, num)))
print(aList)
试试这个 试试这个
使用for循环?您的预期输出是什么样子的?使用for循环?您的预期输出是什么样子的?不要将
list
set
dict
等用作变量名-它们将生成隐藏在中不要将
list
set
dict
等用作变量名-它们将生成隐藏在后面-ins@William-接受答案不是强制性的,只是你的表达方式“这一次对我帮助最大”-向上投票(尽管你还没有看到他们,因为你还没有足够的代表)也是一种表示“这很有帮助”的方式。你现在所做的任何向上投票,都将生效,如果你有足够的代表被允许向上投票。@William-接受答案不是强制性的,只是你的表达方式而已这一次对我帮助最大”-上升投票(虽然你还没有看到他们,因为你还没有足够的代表)也是一种表示“这是有帮助的”的方式。如果你达到足够的代表,你现在所做的任何上升投票都将生效。