簡體   English   中英

需要幫助來了解rstrip()方法

[英]Need help understanding rstrip() method

我一直在把'\\n'從列表中拉出來,這使我很好奇到底發生了什么。

例如,為什么下面的代碼不更改列表的值?

numList = ['13\n', '14\n', '15\n']

for x in numList:
    x = x.rstrip('\n')

當我在外殼中執行此操作時,它會打印出剝離的值,但不會更新numList。 但是由於某些原因,下面的代碼確實更改了我的列表的值:

numList = [x.rstrip() for x in numList]

像下面這樣的東西似乎根本沒有任何作用:

for x in numList:
    x.rstrip('\n')

因此,基本上,什么時候可以for x in someList:語法中使用for x in someList: ?何時需要類似第二個示例的東西?

問題不rstrip() 當您使用for循環遍歷列表時,如-

for x in numList:

在這里,名稱x只是對列表中對象的引用,並且當您執行以下操作時-

x = x.rstrip('\n')

您只需更改x以指向其他字符串對象/引用,就無需更改列表內的引用。 如果要使用for循環更改此類元素,則應enumerate列表,然后在該索引處更改元素。 范例-

for i, x in enumerate(numList):
    numList[i] = x.rstrip('\n')

盡管對於您而言,這不是必需的,因為列表理解(您正在執行的操作)將是執行所需操作的最佳方法。

另外,當您這樣做時-

for x in numList:
    x.rstrip('\n')

它不會更改x ,因為字符串在python中是不可變的,因此x.rstrip('\\n')實際上會返回一個新的字符串對象,該對象從右側剝離了'\\n'

另外,在列表理解中-

numList = [x.rstrip() for x in numList]

您正在使用x.rstrip()字符串創建一個新列表,然后使numList指向該新列表,但它不會更改舊列表,因此,如果執行以下操作-

oldRef = newList
numList = [x.rstrip() for x in numList]
print(oldRef)

您將能夠看到oldRef仍然相同,只是numList現在指向新列表。

暫無
暫無

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

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