6
我是新來的python,我想知道如何交換字符串中的兩個字符。我知道字符串是不可變的,所以我需要找到一種方法來創建一個交換字符的新字符串。 具體來說,一個一般的方法,它接受一個字符串和兩個索引i,j並將j上的字符與j交換。交換字符串
我是新來的python,我想知道如何交換字符串中的兩個字符。我知道字符串是不可變的,所以我需要找到一種方法來創建一個交換字符的新字符串。 具體來說,一個一般的方法,它接受一個字符串和兩個索引i,j並將j上的字符與j交換。交換字符串
正如您正確指出的那樣,字符串是不可變的,不能就地修改 - 但我們可以使用交換字符創建一個新字符串。這裏有一個想法:讓我們將字符串轉換成一個列表,掉在列表中的元素,然後轉換列表回字符串:
def swap(s, i, j):
lst = list(s);
lst[i], lst[j] = lst[j], lst[i]
return ''.join(lst)
另一種可能的實現是用切片和索引操作字符串:
def swap(s, i, j):
return ''.join((s[:i], s[j], s[i+1:j], s[i], s[j+1:]))
無論哪種方式,它按預期工作:
swap('abcde', 1, 3)
=> 'adcbe'
太好了,我在想的一些方式,通過列表來做到這一點。時間有效嗎?因爲我必須把它放在時間關鍵的程序中。 – Wajahat 2014-09-21 00:56:52
@Wajahat這很好。我更喜歡第一個選項,因爲它創建的中間字符串較少,但像往常一樣,如果我們先嚐試對代碼進行簡要分析,然後嘗試過早地優化代碼,則會更好。 – 2014-09-21 00:59:14
只需注意任何希望使用此代碼的人,第二種方式對切片和索引所做的操作在python3中的負指數下無法正常工作。我會建議使用第一種方法。 – Mason 2017-10-18 22:37:24