【问题标题】:How the looping with for in Python really works? [closed]Python 中的 for 循环如何真正起作用? [关闭]
【发布时间】:2019-01-25 17:17:07
【问题描述】:

我正在学习 python,在一次测试中,我创建了一个包含数字列表的类,在其他类中,我创建了一个前一类的列表。在第二节课中,我写了一个方法来动态地放置数字,但它把数字放 x 次以获得上一课列表的长度。

def make_connection(self, number):
        if not self.__has_con:
            for i in range(number):
                 self.__weight.append(1)
            self.__has_con = True

上面的方法是从第一类开始,得到n个数字。

inp = len(self.__inputs)

for n in self.__hidden:
    n.make_connection(inp)

这是二等舱的。如果 __hidden 有 9 个对象,它会将所有 9 个元素的 inp 放入 9 次。

二等舱

def __init__(self, array):
        if isinstance(array, list):
            if len(array) > 2:
                inps = []
                hidd = []
                outs = []

                for i in range(array[0]):
                    k = kn(kn.INPUT)
                    inps.append(k)
                for i in range(array[len(array)-1]):
                    k = kn(kn.OUTPUT)
                    outs.append(k)

                a = array[1:]
                h = a[:len(a)-1]

                if len(h) > 1:
                    for i in h:
                        hd = []
                        for p in range(i):
                            k = kn(kn.HIDDEN)
                            hd.append(k)
                        hidd.append(hd)
                else:
                    for p in range(h[0]):
                        k = kn(kn.HIDDEN)
                        hidd.append(k)

                self.__inputs = inps
                self.__hidden = hidd
                self.__output = outs
            else:
                inps = []
                outs = []

                for i in range(array[0]):
                    k = kn(kn.INPUT)
                    inps.append(k)
                for i in range(array[0]):
                    k = kn(kn.OUTPUT)
                    outs.append(k)

                self.__inputs = inps
                self.__output = outs

【问题讨论】:

  • 我不明白你的问题。不行吗?
  • @figbeam 它可以工作,但并不完美。如果 inp 为 2,则 hidden 中的所有 n 个元素在数组中必须有 2 个 '1',它从 hidden 的长度开始出现 x 次。因此,如果 hidden 有 3 个元素,那么所有这些都必须有 2 个“一”,但它们有 6 个。

标签: python arrays list loops


【解决方案1】:

Python 中的for var in collection 语法使用迭代器。与指定起始值、增量和终止值的 for 循环不同,它表示迭代集合中的所有值。

所以当你在 Python 中这样说时:

for x in range(4):
   print x

这就像用其他语言说的:

for (x = 0; x < 4; ++x) {
   print(x);
}

在这种情况下,Python 的 range 返回一个超过 0..4 的迭代器。在您的示例中,Python 为您提供了集合中的每个元素。

详情请见:https://www.w3schools.com/python/python_iterators.asp

【讨论】:

  • 这就是我的想法,但是如果 inp 为 2,则 hidden 中的所有 n 个元素在数组中必须有 2 个 '1',它从隐藏的长度开始出现 x 次。因此,如果 hidden 有 3 个元素,则所有这些元素都必须有 2 个“一”,但它们有 6 个。它在循环 x 次中运行所有变量的代码。
  • 我不太明白这个问题。您可能需要向我们展示更多代码才能解决问题。如图所示,self.__hidden 中的每个元素都应该有1inp = len(self.__inputs) 副本。您的n 的不同实例是否有可能共享相同的self.__weight 列表?这很容易在 Python 中发生,其中列表或对象被复制为引用而不是真正的副本。我会检查您的初始化代码是否存在潜在问题。
  • def __init__(self, type): self.__type = type self.__weight = [] 这就是我创建n的方式,权重由make_connection方法设置
  • pastebin.com/j4mbHEu3 这就是n在其他类中的实现方式。
  • 我的公司防火墙阻止了 pastebin.com,您是否可以将该代码添加为问题中的块引号?
【解决方案2】:

在python中这样使用for循环:

for str in str_list
    print (str)

【讨论】:

  • 我用过,代码有问题。它多次添加到所有元素。 inp = len(self.__inputs) for n in self.__hidden: n.make_connection(inp) 如果 inp 为 2,则 hidden 中的所有 n 个元素在数组中必须有 2 个 '1',从长度开始出现 x 次隐。因此,如果 hidden 有 3 个元素,则所有这些元素都必须有 2 个“一”,但它们有 6 个。它在循环 x 次中运行所有变量的代码。
  • 对不起,我不能清楚地理解你的问题,可能是你需要初始化你在循环中使用的变量,然后在循环之外打印它可能是有效的。
猜你喜欢
  • 1970-01-01
  • 2022-01-01
  • 2021-08-14
  • 2018-08-12
  • 1970-01-01
  • 2011-04-08
  • 1970-01-01
  • 2020-12-24
  • 2020-08-03
相关资源
最近更新 更多