lhgzbxhz 发表于 2020-7-9 15:46:59

请各位大佬看看我的代码有没有错

本帖最后由 lhgzbxhz 于 2020-7-9 16:11 编辑

有一个奇技淫巧让我费尽心思:https://fishc.com.cn/thread-143989-1-1.html
解决之后还在想这怎么只是二级?
一看答案:好吧,彻底无语(为了不透露答案这里就不细说了)
然后我还是觉得我的代码有问题(虽然运行结果是正确的),因此发上来给各位大佬看看到底有没有问题,如果有该如何改正
f = lambda chs, sz: print(sz) if chs == '' else
f("FishC", '')

Twilight6 发表于 2020-7-9 16:30:56



测试下个数对不对即可,如果个数对了,其他正常情况也没差了~:

a = []
f = lambda chs, sz: a.append(sz) if chs == '' else
f("FishC", '')
print(len(a))
# ——————下面是甲鱼哥的代码——————————————
import itertools
print(len(list(''.join(i) for i in itertools.permutations('FishC'))))

返回结果:
120
120

lhgzbxhz 发表于 2020-7-9 16:53:19

Twilight6 发表于 2020-7-9 16:30
测试下个数对不对即可,如果个数对了,其他正常情况也没差了~:




嗯嗯,不过还有什么优化的余地么(不适用itertools的情况下),毕竟在列表推导式中进行递归感觉不大优雅(不过为了在2行内解决问题只能这么干)
这是没用lambda表达式的情况
def f(chs, sz):
    if chs == '':
      print(sz)
    for c in chs:
      f(chs.replace(c, ''), sz + c)
页: [1]
查看完整版本: 请各位大佬看看我的代码有没有错