簡體   English   中英

這個 python 代碼有什么問題? (初學者的問題)

[英]What's wrong with this python code? (beginner's question)

這段代碼有什么問題? 我一定錯過了一些微不足道的東西。 每次我嘗試運行它時,它都會有一段時間什么都不做,然后輸出“Killed”。 我希望它獲取列表中的每個元素,將“x”添加到它,然后將 append 這個新元素添加到列表中,這樣 output 將如下所示:

['a', 'b', 'c', 'd', 'ax', 'bx', 'cx', 'dx']

到目前為止我的代碼:

list = ['a', 'b', 'c', 'd']

for element in list:
    element = element + "x"
    list.append(element)

print(list)

當您遍歷它時,您將附加到您的列表中,因此每次您向前邁出“一步”時,您都會添加另一個“步驟”以便稍后采取,因此您最終會得到['a', 'b', 'c', 'd', 'ax', 'bx', 'cx', 'dx', 'axx', 'bxx'...] 出於與此類似的許多原因,一般規則是您應該避免在迭代列表時修改列表。

試試這個

list_1 = ['a', 'b', 'c', 'd']

list_2 = [elem + 'x' for elem in list_1]

result = list_1 + list_2

print(result)
list = ['a', 'b', 'c', 'd']
list2 = []
for element in list:
    list2.append(element + "x")
list.extend(list2)

print(list)

由於您在循環中附加,因此您曾經得到 memory 錯誤。 上面的代碼可能會對你有所幫助。

附加到 list2 后,我只是將其添加到原始 list1 中,並得到了所需的結果。

list1 = ['a', 'b', 'c', 'd']
list2 = []

for x in list1:
    list2.append(x+'x')

print(list1+list2)  

這段代碼有什么問題? 答案是您創建了一個無限循環,因為您在迭代時不斷地將元素添加到列表中。

一種更簡潔的方法是使用extend

所以你可以做這樣的事情:

l = ['a','b','c','d'] # DO NOT USE list as a variable name, it is a keyword in python

l.extend([element + 'x' for element in l])

print(l)

此外,您的代碼不起作用的原因是因為您實際上是在創建一個無限循環,因為您的循環不斷將元素添加到您正在迭代的列表中。

以我上面提到的方式使用擴展,將創建一個包含新項目的臨時列表,然后將臨時列表中的每個項目添加到實際列表中。

不要使用list ,它是一個關鍵字(例如,請參閱我在第 2 行中使用的副本 function)

您在迭代時附加到列表,因此這將導致無限循環

base_list = ['a', 'b', 'c', 'd']
new_list = list.copy(base_list)
for element in base_list:
    newelement = element + 'x'
    new_list.append(newelement)
print(new_list)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM