菜鸟题:代码如何精简?

幽幽浮浮 2017-12-20 06:46:06
Python代码:
L = ['A','B','C','D','E','F','G','H','I','J','K']
print([a, for a in L])
print([a+b, for a in L for b in L])
print([a+b+c, for a in L for b in L for c in L])
print([a+b+c+d, for a in L for b in L for c in L for d in L])

....................

一直写11行,感觉代码比较累赘,请问能用一个迭代函数或循环函数来完成吗?或其它简洁的代码~求指教。
...全文
208 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
幽幽浮浮 2017-12-29
  • 打赏
  • 举报
回复
楼上几位都好厉害!
extend 2017-12-21
  • 打赏
  • 举报
回复
我也写一个,理论上循环能解决的问题,都可以递归来做:

L=['A','B','C']
def func(prt_str,deepth):    #deepth是传入的是深度

    if deepth>1:
        for item in L:
            func(prt_str+item,deepth-1)
    else:
        for item in L:
            print(prt_str+item)
       
func("",3)
如果要打印从第一层到第11层的结果,自己在外面写个for循环调用func即可。
extend 2017-12-21
  • 打赏
  • 举报
回复
引用 楼主 longmarchufo 的回复:
Python代码: L = ['A','B','C','D','E','F','G','H','I','J','K'] print([a, for a in L]) print([a+b, for a in L for b in L]) print([a+b+c, for a in L for b in L for c in L]) print([a+b+c+d, for a in L for b in L for c in L for d in L]) .................... 一直写11行,感觉代码比较累赘,请问能用一个迭代函数或循环函数来完成吗?或其它简洁的代码~求指教。
代码对吗?IDLE里根本运行不了啊。 >>> L = ['A','B','C','D','E','F','G','H','I','J','K'] >>> print([a, for a in L]) SyntaxError: invalid syntax >>> print([a+b, for a in L for b in L]) SyntaxError: invalid syntax
TheLittlePython 2017-12-21
  • 打赏
  • 举报
回复
引用 4 楼 TheLittlePython 的回复:
L=['A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'I', 'J', 'K'] def haha(L): i=0 while i <= len(L): print ''.join(L[:i]) i += 1 haha(L) 这样就好
[quote=引用 4 楼 TheLittlePython 的回复:] L=['A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'I', 'J', 'K'] def haha(L): i=0 while i <= len(L): print ''.join(L[:i]) i += 1 haha(L) 我理解错了,赞同一楼
TheLittlePython 2017-12-21
  • 打赏
  • 举报
回复
L=['A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'I', 'J', 'K'] def haha(L): i=0 while i <= len(L): print ''.join(L[:i]) i += 1 haha(L) 这样就好
混沌鳄鱼 2017-12-20
  • 打赏
  • 举报
回复

# -*- coding: UTF-8 -*-
from itertools import product
L = ['A','B','C','D','E','F','G','H','I','J','K']
n = 3
for i in range(1, n+1):
    print(list(map(''.join, product(L, repeat=i))))
n最好不要写成11,因为你根本不明白那意味着什么。

37,718

社区成员

发帖
与我相关
我的任务
社区描述
JavaScript,VBScript,AngleScript,ActionScript,Shell,Perl,Ruby,Lua,Tcl,Scala,MaxScript 等脚本语言交流。
社区管理员
  • 脚本语言(Perl/Python)社区
  • IT.BOB
加入社区
  • 近7日
  • 近30日
  • 至今

试试用AI创作助手写篇文章吧