如何循环遍历Python字符串数组

时间:2014-08-29 07:41:57

标签: python-2.7

为了执行这个基本上从句子中删除单词的代码,我们必须使用split.string来访问单词。

 def censor(text, word):
     splitstring=text.split()
     for elem in range(len(splitstring)):
        if splitstring[elem]==word:
             splitstring[elem]='*'*len(word)

    return " ".join(splitstring)**strong text**

为什么我们不能使用“传统的”for-loop,就像在字母中循环一样?

for word in text:
    for elem in word:
        if elem==word:
             word='*'*len(word)    """etc"""

1 个答案:

答案 0 :(得分:0)

这里有多个问题:

  1. 当我们迭代一串文字时,为什么我们得到的单个字母不是单词? Python的禅宗说“应该有一个 - 最好只有一个 - 明显的方式来做到这一点。” 字符串只是字符的字符串。它可能有也可能没有单独的单词。迭代字符串最明显的方法是一次一个字符。

  2. 当我们使用“for text in text”迭代并修改“word”时,为什么“text”不会改变? 答案分为两部分: (a)字符串在Python中是不可变的,因此无论何时修改字符串,都会获得一个新字符串,而原始字符串保持不变。因此,除了通过将“text”重新分配给新字符串之外,无法修改字符串“text”。 (b)即使字符串是可变的,当你迭代一个iterable时,你只能获得元素的副本。因此修改它们对可迭代对象没有影响。

  3. “对于范围内的元素(len(splitstring))”看起来很笨拙。在Python中执行此操作的正确方法是什么?

  4. 好的,我提出了这个问题。但答案仍然很重要。 Pythonic的方法是:

    for elem in splitstring:
    

    或者,如果您需要每个元素的索引,那么您可以这样做:

    for index, elem in enumerate(splitstring):