我需要找到一种方法(在python中),以根据给定的x长度产生(+1)和(-1)整数的所有排列。例如,如果x = 1,则应为[(+1),(-1)]; x = 2-> [[[(+ 1)(+ 1)],[(+ 1)(-1)],[(-1)(+ 1)],[(-1)(-1)] ] 等等。
实际上,itertools.product()函数可用于字符串排列。这就是我可以做的:
import itertools
def binary_sequence(k):
L1 = [''.join(x) for x in itertools.product('+-', repeat=k)]
L2 = list()
for i in L1:
L2.append([i])
L2 = np.array(L2)
return (L2)
但是,之后我找不到将整数分配给字符串的方法。使用itertools或其他工具可以对整数执行此操作吗?
答案 0 :(得分:2)
如果我正确理解,您可以这样做:
import itertools
import numpy as np
def binary_sequence(k):
return np.array([x for x in itertools.product([-1, 1], repeat=k)])
for seq in binary_sequence(2):
print(seq)
输出
[-1 -1]
[-1 1]
[ 1 -1]
[1 1]
product函数从文档中收到一个可迭代项:
输入可迭代项的笛卡尔积。
答案 1 :(得分:1)
您真的可以进行字符串排列:
In [338]: list(itertools.product(["-1","+1"],repeat=3))
Out[338]:
[('-1', '-1', '-1'),
('-1', '-1', '+1'),
('-1', '+1', '-1'),
('-1', '+1', '+1'),
('+1', '-1', '-1'),
('+1', '-1', '+1'),
('+1', '+1', '-1'),
('+1', '+1', '+1')]