我正在尝试解决一个包含与此相似的代码部分的问题。但是,每当我尝试执行脚本时,结果就是一个无限循环。此问题的原因是什么,我该如何解决?
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
但是问题仍然存在:
答案 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]