我怎样才能编写一个函数,使用一个带有字母字符串的列表来重新编写一个带有空格的列表,并使用请求的尽可能多的“for循环”?

2024-03-29 14:26:05 发布

您现在位置:Python中文网/ 问答频道 /正文

你好,stackoverflow社区! 几周来,我一直在努力寻找一种方法来完成这项工作,而不寻求帮助(有点像个人的挑战),但我做不到,而且大学项目占用了我大部分的时间,不能做到这一点让我很沮丧,因为这看起来不太难,但我想不出怎么做。成为开发人员的第一课是学会与他人合作,对吗?所以我是来寻求帮助的。我有这个密码:

l = [None]*8
k = ['m','i','k','e']
for a in k: 
   for b in k: 
       for c in k: 
          l[0] = a 
          l[1] = b 
          l[2] = c 
          print(l)

输出如下:

['m', 'm', 'm', None, None, None, None, None]
['m', 'm', 'i', None, None, None, None, None]
['m', 'm', 'k', None, None, None, None, None]
['m', 'm', 'e', None, None, None, None, None]
['m', 'i', 'm', None, None, None, None, None]
['m', 'i', 'i', None, None, None, None, None]
['m', 'i', 'k', None, None, None, None, None]
['m', 'i', 'e', None, None, None, None, None]
['m', 'k', 'm', None, None, None, None, None]
['m', 'k', 'i', None, None, None, None, None]
['m', 'k', 'k', None, None, None, None, None]
['m', 'k', 'e', None, None, None, None, None]
['m', 'e', 'm', None, None, None, None, None]
['m', 'e', 'i', None, None, None, None, None]
['m', 'e', 'k', None, None, None, None, None]
['m', 'e', 'e', None, None, None, None, None]
['i', 'm', 'm', None, None, None, None, None]
['i', 'm', 'i', None, None, None, None, None]
['i', 'm', 'k', None, None, None, None, None]
['i', 'm', 'e', None, None, None, None, None]
['i', 'i', 'm', None, None, None, None, None]
['i', 'i', 'i', None, None, None, None, None]
['i', 'i', 'k', None, None, None, None, None]
['i', 'i', 'e', None, None, None, None, None]
['i', 'k', 'm', None, None, None, None, None]
['i', 'k', 'i', None, None, None, None, None]
['i', 'k', 'k', None, None, None, None, None]
['i', 'k', 'e', None, None, None, None, None]
['i', 'e', 'm', None, None, None, None, None]
['i', 'e', 'i', None, None, None, None, None]
['i', 'e', 'k', None, None, None, None, None]
['i', 'e', 'e', None, None, None, None, None]
['k', 'm', 'm', None, None, None, None, None]
['k', 'm', 'i', None, None, None, None, None]
['k', 'm', 'k', None, None, None, None, None]
['k', 'm', 'e', None, None, None, None, None]
['k', 'i', 'm', None, None, None, None, None]
['k', 'i', 'i', None, None, None, None, None]
['k', 'i', 'k', None, None, None, None, None]
['k', 'k', 'm', None, None, None, None, None]
['k', 'k', 'i', None, None, None, None, None]
['k', 'k', 'k', None, None, None, None, None]
['k', 'k', 'e', None, None, None, None, None]
['k', 'e', 'm', None, None, None, None, None]
['k', 'e', 'i', None, None, None, None, None]
['k', 'e', 'k', None, None, None, None, None]
['k', 'e', 'e', None, None, None, None, None]
['e', 'm', 'm', None, None, None, None, None]
['e', 'm', 'i', None, None, None, None, None]
['e', 'm', 'k', None, None, None, None, None]
['e', 'm', 'e', None, None, None, None, None]
['e', 'i', 'm', None, None, None, None, None]
['e', 'i', 'i', None, None, None, None, None]
['e', 'i', 'k', None, None, None, None, None]
['e', 'i', 'e', None, None, None, None, None]
['e', 'k', 'm', None, None, None, None, None]
['e', 'k', 'i', None, None, None, None, None]
['e', 'k', 'k', None, None, None, None, None]
['e', 'k', 'e', None, None, None, None, None]
['e', 'e', 'm', None, None, None, None, None]
['e', 'e', 'i', None, None, None, None, None]
['e', 'e', 'k', None, None, None, None, None]
['e', 'e', 'e', None, None, None, None, None]

我想做的是,有一个函数,它可以计算出nonelistI中有多少个空格想要。就像传递一个参数,选择要替换多少个。我想象这个函数是如何工作的,在我的脑海中它有3个参数(无列表的大小,要替换的字母列表,要替换的无的数目)。我对递归很熟悉,但想不出用它实现这个的方法。提前感谢:)


Tags: 项目方法函数innone列表for参数
3条回答

递归是一种方法:

def print_permutations(k, l, level = 0):
    if level == len(l):
        print(l)
    else:
        for a in k:
            l[level] = a
            print_permutations(k, l, level+1 )



l = [None]*8
k = ['m','i','k','e']

print_permutations(k, l)

也可以使用标准工具:

from itertools import combinations_with_replacement


k = ['m','i','k','e']

for p in combinations_with_replacement(k, 8):
    print(p) 
    # print(list(p)) if you want to print it as a list

顺便说一句,k='mike'的工作原理是一样的。你知道吗

解决方法是使用递归。你知道吗

我将向您展示伪代码:

假设要填充到nonelist的索引6(或l

fillNoneList(nonelist, word, index, size):
    if index <= size:
        for c in word:
            nonelist[index] = c
            fillNoneList(nonelist, word, index + 1, size)
        end-for
    else:
        HERE YOU PRINT, BECAUSE YOU REACHED THE END
end

然后您只需调用fillNoneList(l, k, 0, 6),就可以完成:)

def func(n, list, k):
    if n == 0:
        print(list)
    else:
        for i in k:
            list.append(i)
            func(n - 1, list)
            list.pop()

你传递数字和一个空的列表和列表k

相关问题 更多 >