【问题标题】:How to repeat an operation on a list如何在列表上重复操作
【发布时间】:2018-04-05 10:16:50
【问题描述】:

我想要一个由 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 次。

【问题讨论】:

标签: python python-3.x for-loop


【解决方案1】:

试试这个

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

【讨论】:

    【解决方案2】:

    你可以创建一个方法:

    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))))
    

    list1 = randomizeList(aList)
    list2 = randomizeList(list1)
    list3 = randomizeList(list2)
    

    还有……

    【讨论】:

    • 不要使用 list set dict 等作为变量名 - 它们会影响内置
    【解决方案3】:

    通过创建函数:

    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']
    

    【讨论】:

    • @William How does accepting answers work - 接受答案不是强制性的,只是你说“这个对我帮助最大”的方式 - 点赞(虽然你还没有看到他们,因为你还没有足够的代表)也是一种说“这很有帮助”的方式。如果您达到足够多的代表允许投票,您现在所做的任何投票都会生效。
    【解决方案4】:

    试试这个

         import random
         def randomoperation():
             num = 2
             aList = ['A', 'B', 'C', 'D']
             newList = []
             newList += random.sample(aList, num)
             L = [''.join(newList[0:2])]+aList
             return L
         for i in range(5):
             print randomoperation()
    

    【讨论】:

      猜你喜欢
      • 2017-12-21
      • 1970-01-01
      • 2014-11-30
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-10-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多