在 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()]