首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >python:从itertools.permutations()赋值的正确方法?

python:从itertools.permutations()赋值的正确方法?
EN

Stack Overflow用户
提问于 2011-07-11 23:13:40
回答 3查看 214关注 0票数 0

下面的代码创建了一个多维列表(不确定这是否是Pythonic所说的。PHP家伙在这里)

代码语言:javascript
复制
patterns.append(list(itertools.permutations('1234567',7)))

模式的价值变成:

代码语言:javascript
复制
([
    [1,2,3,4,5,6,7],
    [1,2,3,4,5,7,6], ...

])

我想要的结果是这样的:

代码语言:javascript
复制
([1,2,3,4,5,6,7], [1,2,3,4,5,7,6]...)

如果我尝试这样做:

代码语言:javascript
复制
patterns = list(itertools.permutations('1234567',7))

结果是一个单独数字的列表

代码语言:javascript
复制
123445671234576

我遗漏了什么?

谢谢,

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2011-07-11 23:25:06

你是extend()而不是append()

代码语言:javascript
复制
patterns.extend(itertools.permutations('1234567',7))

这也使得list()变得多余,因为extend()工作在可迭代对象上。

这假设您可以将排列本身作为元组。你的问题令人困惑,因为你的符号与你用文字写的不一致。

票数 1
EN

Stack Overflow用户

发布于 2011-07-11 23:24:40

如果您需要

代码语言:javascript
复制
([1,2,3,4,5,6,7], [1,2,3,4,5,7,6]...)

比你可以使用的:

代码语言:javascript
复制
from itertools import permutations
patterns = tuple(list(int(y) for y in x) for x in permutations('1234567',7))

或者,如果您需要获取数字,可以使用xrange而不是'1234567‘:

代码语言:javascript
复制
patterns = tuple(list(x) for x in permutations(xrange(1,8),7))
票数 1
EN

Stack Overflow用户

发布于 2011-07-11 23:24:44

您可以使用以下命令获取列表的元组

代码语言:javascript
复制
tuple(list(p) for p in itertools.permutations('1234567', 7))

如果您想要整数而不是只有一个元素的字符串,那么一种简单而通用的方法是

代码语言:javascript
复制
digits = [int(digit) for digit in '1234567']
tuple(list(p) for p in itertools.permutations(digits, 7))
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/6652337

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档