Python 基于数组长度的扩展函数
我有下面的代码,我想让它响应传递给它的初始数组(字母)。目前它可以处理字母也许可以试试这样的东西Python 基于数组长度的扩展函数,python,arrays,itertools,Python,Arrays,Itertools,我有下面的代码,我想让它响应传递给它的初始数组(字母)。目前它可以处理字母也许可以试试这样的东西 import itertools import numpy as np #variable length letters = ["a", "b", "c", "d", "e", "f", "g"] n = len(letters) # Max limit for each element, ie. limit of 2 from [a, b], for k = 2 is ['a00 b00',
import itertools
import numpy as np
#variable length
letters = ["a", "b", "c", "d", "e", "f", "g"]
n = len(letters) # Max limit for each element, ie. limit of 2 from [a, b], for k = 2 is ['a00 b00', 'a00 b10', 'a10 b00', 'a10 b10']
k = 3 # Number of elements we want to pick.
variable_s = []
#run loop based on array length.
for x, p in enumerate(itertools.product(range(n), repeat=k)):
variable_s.append(' '.join([letter + str(q).zfill(2)[::-1]
for letter, q in zip(letters, p)]))
也许试试这样的
import itertools
import numpy as np
#variable length
letters = ["a", "b", "c", "d", "e", "f", "g"]
n = len(letters) # Max limit for each element, ie. limit of 2 from [a, b], for k = 2 is ['a00 b00', 'a00 b10', 'a10 b00', 'a10 b10']
k = 3 # Number of elements we want to pick.
variable_s = []
#run loop based on array length.
for x, p in enumerate(itertools.product(range(n), repeat=k)):
variable_s.append(' '.join([letter + str(q).zfill(2)[::-1]
for letter, q in zip(letters, p)]))
以下是您可以进行的最小更改-将您的
if
语句替换为:
variable_s[x] = ''.join(
letter+str(format(p_i/(increment)**(-1.0),'.2f')).replace("0.", "")
for letter, p_i in zip(letters, p)
)
其他说明:
的拼写更好p[1]/(increment)**(-1.0)
p[1]*increment
x=0;对于itertools.product中的p(范围(d),重复=e):x=x+1更好地拼写
x=d**e
- 以下是您可以做的最小更改-将您的
if
语句替换为:
variable_s[x] = ''.join(
letter+str(format(p_i/(increment)**(-1.0),'.2f')).replace("0.", "")
for letter, p_i in zip(letters, p)
)
其他说明:
的拼写更好p[1]/(increment)**(-1.0)
p[1]*increment
x=0;对于itertools.product中的p(范围(d),重复=e):x=x+1更好地拼写
x=d**e
itertools.compositions
?——同样对于长度,嵌套for循环对于范围内的i(len(字母)):对于范围内的li(i):我正在尝试创建数组的每个组合(不超过任何长度)和相关数字的列表。然后,此列表将通过回归模型的另一个循环传递。我编辑了您的代码以添加换行(并使用括号),以便更容易地看到此处的重复。如果len(字母)==0,会发生什么?感谢您对代码进行换行。要回答您的问题,代码将不会运行,因为len(字母)==0。在本节之前还有一个额外的功能检查数组长度和内容。这段代码应该做什么?为什么不使用itertools.compositions
?——同样对于长度,嵌套for循环对于范围内的i(len(字母)):对于范围内的li(i):
我正在尝试创建数组的每个组合(不超过任何长度)和相关数字的列表。然后,此列表将通过回归模型的另一个循环传递。我编辑了您的代码以添加换行(并使用括号),以便更容易地看到此处的重复。如果len(字母)==0,会发生什么?感谢您对代码进行换行。要回答您的问题,代码将不会运行,因为len(字母)==0。在本节之前,还有一个额外的功能,用于检查数组长度和内容。letters[:len(letters)],p[:]
的拼写更好letters,p
用您给出的内容更改if语句得到的输出是['0', '1', '2', '3', '4', '5', '6', '7', '8', '9', '10', '11', '12', '13', '14', '15', '16', '17', '18', '19', '20', '21', '22', '23', '24', '25', '26', '27', '28', '29', '30', '31', '32', '33', '34', '35', '36', '37', '38', '39', '40', '41', '42', '43', '44', '45', '46', '47', '48', '49', '50', '51', '52', '53']。我已经用我正在寻找的输出更新了问题。我也编辑了答案。顺便说一句,对我来说效果很好。对于k=3
,和n=7
,我得到了['a00 b00 c00'、'a00 b00 c10'、'a00 b00 c20'、'a00 b00 c30'…,
也不需要事先知道组合的数量。只需将variable_s[x]
更改为variable_s.append()
即可。谢谢您的更新。不过,我希望您的答案的输出是[a00 b00 c00 d00 e00 f00 g00',a00 b00 c00 d00 e00 f00 g10',a00 b00 c00 d00 e00 f00 g20',等等,而我得到了[a00 b00 c00',a00 b00 c10',a00 b00 c20',a00 b00 c30',a00 b00 c40',a00 b00 c50',a00 b00 c60',等等],所以这就是你所需要的一切。只要保持n=len(字母)
这将允许您获得每个项目的多达N个数量,并将k
变量更改为适合您的任何变量。字母[:len(字母)],p[:]
的拼写更好字母,p
我用您给出的内容更改if语句得到的输出是['0', '1', '2', '3', '4', '5', '6', '7', '8', '9', '10', '11', '12', '13', '14', '15', '16', '17', '18', '19', '20', '21', '22', '23', '24', '25', '26', '27', '28', '29', '30', '31', '32', '33', '34', '35', '36', '37', '38', '39', '40', '41', '42', '43', '44', '45', '46', '47', '48', '49', '50', '51', '52', '53']。我已经用我正在寻找的输出更新了问题。我也编辑了答案。顺便说一句,对我来说效果很好。对于k=3
,和n=7
,我得到了['a00 b00 c00'、'a00 b00 c10'、'a00 b00 c20'、'a00 b00 c30'…,
也不需要事先知道组合的数量。只需将variable_s[x]
更改为variable_s.append()
即可。谢谢您的更新。不过,我希望您的答案的输出是[a00 b00 c00 d00 e00 f00 g00',a00 b00 c00 d00 e00 f00 g10',a00 b00 c00 d00 e00 f00 g20',等等,而我得到了[a00 b00 c00',a00 b00 c10',a00 b00 c20',a00 b00 c30',a00 b00 c40',a00 b00 c50',a00 b00 c60',等等],所以这就是你所需要的一切。只要保持n=len(字母)
这将允许您获得每个项目的多达N个数量,并将k
变量更改为适合您的任何变量。我使用您给出的内容更改if语句得到的输出是['0','1','2','3','4','5','6','7','8','9','10','11','12','13','14','15','16','17','18','19','20','21','22','23','24','25','26']。我已经用我正在寻找的输出更新了这个问题。用你给出的内容更改if语句得到的输出是['0','1','2','3','4','5','6','7','8','9','10','11','12','13','14','15','16','17','18','19','20','21','22','23','24','25','26']。我已经用我正在寻找的输出更新了问题。