Python - 迭代并更改列表的元素

时间:2015-02-07 20:46:04

标签: python list loops

我刚刚开始学习python,并且在迭代和if语句方面遇到了麻烦。

我有一个列表d

d = ['s','u','p','e','r','c','a','l','i','f','r','a','g','i','l','i','s','t','i','c','e','x','p','i','a','l','i','d','o','c','i','o','u','s']

我需要遍历列表并检查每个元素是否等于元音(aeiou )。如果它是元音,那么该元素必须替换为字母前面带有单词'vowel'的子列表。例如,如果检测到'a',则会将其替换为['vowel', 'a']

这是我到目前为止所想到的,尽管我知道它是不正确的:

for items in d:
    if items == 'a':
        d[items:items] = ['vowel', 'a']

5 个答案:

答案 0 :(得分:4)

要检查成员资格,您可以使用in操作数,对于替换,您可以使用enumerate循环显示您的列表:

>>> for i,item in enumerate(d) :
...   if item in ('a', 'e', 'i', 'o', 'u') :
...              d[i]=['vowel',item]
... 
>>> d
['s', ['vowel', 'u'], 'p', ['vowel', 'e'], 'r', 'c', ['vowel', 'a'], 'l', ['vowel', 'i'], 'f', 'r', ['vowel', 'a'], 'g', ['vowel', 'i'], 'l', ['vowel', 'i'], 's', 't', ['vowel', 'i'], 'c', ['vowel', 'e'], 'x', 'p', ['vowel', 'i'], ['vowel', 'a'], 'l', ['vowel', 'i'], 'd', ['vowel', 'o'], 'c', ['vowel', 'i'], ['vowel', 'o'], ['vowel', 'u'], 's']
>>> 

答案 1 :(得分:4)

你很近,这是所需的最小编辑。

for items in d:
    if items in {'a', 'e', 'i', 'o', 'u'}:
        d[d.index(items)] = ['vowel', items]   # Get the index of the element, then replace 
print(d)

答案 2 :(得分:3)

您可以使用列表理解:

[['vowel', i] if i in 'aeiou' else i for i in d]

答案 3 :(得分:1)

尝试一下:

for key, l in enumerate(d):
    if l in ('a', 'e', 'i', 'o', 'u'):
        d[key] = ['vowel', l]

答案 4 :(得分:1)

在长度范围内迭代要便宜得多。您可以避免元素查找,这会花费额外的0(n)

for index in xrange(len(d)):
    if d[index] in 'aeiou':
        d[index] = ['vowel', d[index]]