python程序写错如何修改_写错 Python 部分代码,结果让我想不明白

问题比较难描述。我是新手,本来我是用 Ruby 写全排列算法生成器的,然后想看 Python 怎么写。我不懂 Python,所以看别人怎么用 yield 也就随便用。问题出在我写错的最后一句:print(','.join(str(o))),打印的结果我实在看不懂,或许是我不懂 yield 的流程。是我的 yield 哪里写错了吗?

# 生成数组[1,2,3,4]的全部元素的全排列

def scan(src, m, n):

if (m == n):

yield src

else:

for i in range(m, (n+1)):

# 交换

tmp = src[m]

src[m] = src[i]

src[i] = tmp

# 递归

for _ in scan(src, (m+1), n):

yield _

# 恢复交换前

tmp = src[m]

src[m] = src[i]

src[i] = tmp

def perm_core(src):

n = len(src) - 1

for _ in scan(src, 0, n):

yield _

# main

list = [i for i in range(1, 5)]

for o in perm_core(list):

# ~ w = [str(y) for y in o]

# ~ print (','.join(w)) # 正确代码

print(','.join(str(o))) # 错误代码

打印结果

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值