在“ for”循环中列出附加问题

时间:2020-04-28 01:00:07

标签: python for-loop arraylist append infinite-loop

我正在尝试解决一个包含与此相似的代码部分的问题。但是,每当我尝试执行脚本时,结果就是一个无限循环。此问题的原因是什么,我该如何解决?

paginator object

我在计算机和Google Colab上都在本地尝试了该程序,但是在两种情况下都可以。但是,它没有将值1、2附加到列表import random import time from pynput.keyboard import Key, Controller while True: keyboard = Controller() sleep_time = random.randrange(0, 100) time.sleep(sleep_time) for char in "nnnn": keyboard.press(char) keyboard.release(char) time.sleep(0.21) ,而是以不同的方式工作。

我通过分配 public void addHeader(){ myTable = Table.builder() .addColumnsOfWidth(widthColumn,widthColumn,widthColumn) .addRow( Row.builder() .add(TextCell.builder().text("Id").borderWidth(1).backgroundColor(Color.LIGHT_GRAY).horizontalAlignment(HorizontalAlignment.CENTER).build()) .add(TextCell.builder().text("Name").borderWidth(1).backgroundColor(Color.LIGHT_GRAY).horizontalAlignment(HorizontalAlignment.CENTER).build()) .add(TextCell.builder().text("Town").borderWidth(1).backgroundColor(Color.LIGHT_GRAY).horizontalAlignment(HorizontalAlignment.CENTER).build()) .build()) .build(); } 创建了 public void drawTable() { tableDrawer = TableDrawer.builder() .contentStream(contentStream) .startX(marginX) .startY(page.getMediaBox().getHeight() - marginY) .table(myTable) .build(); tableDrawer.draw(); } 的副本,并像这样更改了a=[1,2] for i in a: a.append(i) print("Infinite") 循环的结构:

a

但是问题仍然存在:

enter image description here

2 个答案:

答案 0 :(得分:1)

发生的事情是循环的每次迭代中的每一次,都将新值添加到列表 //MARK:- UITextFieldDelegate func textField(_ textField: UITextField, shouldChangeCharactersIn range: NSRange, replacementString string: String) -> Bool { let allowedCharacters = "1234567890" let allowedCharcterSet = CharacterSet(charactersIn: allowedCharacters) let typedCharcterSet = CharacterSet(charactersIn: string) return allowedCharcterSet.isSuperset(of: typedCharcterSet) } 中。这意味着每次迭代后列表中总会有一个新元素,这意味着循环将永远不会结束。

至于您的a副本,并不能完全创建a的副本。 a仅引用变量z=a,因此修改a也会修改z

答案 1 :(得分:0)

在迭代容器时,请勿更改容器的结构。在这里,您要在surge的末尾进行迭代。那将永远持续下去。

您尝试修复它的方向正确。但问题是,a没有创建列表的副本;它将创建对同一列表的新引用。

您需要显式地制作副本:

z=a

或者z=a[:] # Copy via slice notation for i in z: a.append(i) extend本身:

a

或相乘:

a.extend(a)
print(a)  # [1, 2, 1, 2]