python生成指定长度的列表_在Python中生成n长度位列表

我想要一个函数,它将为我提供指定长度的所有可能的字符串,这些字符串仅由零和1组成.例如:

spam(4)

应该让我:

['0110', '0111', '0001', '0011', '0010', '0101', '0100', '1110', '1100', '1101', '1010', '1011', '1001', '1000']

我尝试使用itertools.permutations来完成这项工作.所以,这就是我所做的.

def getPerms(n):

perms = getCandidates(n)

res = []

for i in perms:

res.extend(permutations(i))

res = clean(res)

return res

def clean(ar):

res = []

for i in ar:

temp = ""

for j in i:

temp += j

res.append(temp)

return list(set(res))

def getCandidates(n):

res = []

for i in range(1, n):

res.append("1"*i + "0"*(n-i))

return res

但这非常低效,并在10上输入内存错误.

解决方法:

>>> import itertools

>>> [''.join(i) for i in itertools.product('01', repeat=4)]

['0000', '0001', '0010', '0011', '0100', '0101', '0110', '0111', '1000', '1001', '1010', '1011', '1100', '1101', '1110', '1111']

使用函数(假设已导入itertools):

def bitGen(n):

return [''.join(i) for i in itertools.product('01', repeat=n)]

对于较大的ns,返回生成器可能更合适.

def bitGen(n):

return (''.join(i) for i in itertools.product('01', repeat=n))

# Alternatively:

def bitGen(n):

for i in itertools.product('01', repeat=n):

yield ''.join(i)

标签:python,permutation,bit

来源: https://codeday.me/bug/20190713/1450331.html

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值