Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/309.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 基于数组长度的扩展函数_Python_Arrays_Itertools - Fatal编程技术网

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']。我已经用我正在寻找的输出更新了问题。