[英]How to write this for loop in a single line in Python?
如何在Python中將以下內容寫為一行?
my_list = ['ab1c', 'fo2o', 'ba3r']
for i in xrange(len(my_list)):
my_list[i] = my_list[i][1:3]
我試過了
my_list = [x for i in xrange(len(my_list)) my_list[i] = my_list[i][2:3]]
但它只會返回無效的語法錯誤
清單理解方法-
my_list[:] = [x[1:3] for x in my_list]
[:]
用於使my_list
進行適當的突變,就像您的for
循環方法一樣。
演示-
>>> my_list = ['ab1c', 'fo2o', 'ba3r']
>>> my_list[:] = [x[1:3] for x in my_list]
>>> my_list
['b1', 'o2', 'a3']
根據評論中的要求-
您能用
my_list = [x[1:3] for x in my_list]
詳細說明一下嗎?
一個非常簡單的代碼示例來顯示差異-
>>> my_list = ['ab1c', 'fo2o', 'ba3r']
>>> a = my_list
>>> my_list = [x[1:3] for x in my_list]
>>> my_list
['b1', 'o2', 'a3']
>>> a
['ab1c', 'fo2o', 'ba3r']
上述方法導致-
>>> my_list = ['ab1c', 'fo2o', 'ba3r']
>>> a = my_list
>>> my_list[:] = [x[1:3] for x in my_list]
>>> my_list
['b1', 'o2', 'a3']
>>> a
['b1', 'o2', 'a3']
這是因為列表推導會創建一個新列表,當您在賦值運算符的左側使用my_list[:]
時,您正在要求Python改變my_list
的位置(但是當您執行my_list = <something>
,您只是在創建my_list
請引用一個新列表,而不是對原始列表進行變異)。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.