在 python 中使用 for 循环重新分配列表中的元素
Reassigning elements in a list using a for loop in python
我想知道为什么当我使用 for 循环时变量没有被重新分配。
def master_yoda(text):
wordlist = text.split()
for word in wordlist:
word = word[::-1]
return wordlist
变量 word
已重新分配,但如果您想更改 wordlist
,则需要执行以下操作:
def master_yoda(text):
wordlist = text.split()
for idx, word in enumerate(wordlist):
wordlist[idx] = word[::-1]
return wordlist
编辑 -> 你也可以这样做:
def master_yoda(text):
return text[::-1].split()[::-1]
首先,当您在 Python 中进行切片时,例如:
// strings are basically arrays of characters
array = [1,2,3,4]
_slice = array[start:end:step]
它复制数组。
其次,您实际上并不是在引用文本,而是在引用 text.split()
生成的副本。做一些像
def master_yoda(text):
words = []
for word in text.split():
words.append(word[::-1])
return words
或列表理解:
def master_yoda(text):
return [word[::-1] for word in text.split()]
我想知道为什么当我使用 for 循环时变量没有被重新分配。
def master_yoda(text):
wordlist = text.split()
for word in wordlist:
word = word[::-1]
return wordlist
变量 word
已重新分配,但如果您想更改 wordlist
,则需要执行以下操作:
def master_yoda(text):
wordlist = text.split()
for idx, word in enumerate(wordlist):
wordlist[idx] = word[::-1]
return wordlist
编辑 -> 你也可以这样做:
def master_yoda(text):
return text[::-1].split()[::-1]
首先,当您在 Python 中进行切片时,例如:
// strings are basically arrays of characters
array = [1,2,3,4]
_slice = array[start:end:step]
它复制数组。
其次,您实际上并不是在引用文本,而是在引用 text.split()
生成的副本。做一些像
def master_yoda(text):
words = []
for word in text.split():
words.append(word[::-1])
return words
或列表理解:
def master_yoda(text):
return [word[::-1] for word in text.split()]