【发布时间】:2013-07-24 05:29:39
【问题描述】:
在 Python 3 中,如何将 'b' 之间的元素更改为大写形式。 从 ls = ['a','b','c','d','b','f'] 到 ls = ['a','b','C','D','b','f']
有没有办法控制迭代器的位置?
【问题讨论】:
标签: list for-loop python-3.x iterator
在 Python 3 中,如何将 'b' 之间的元素更改为大写形式。 从 ls = ['a','b','c','d','b','f'] 到 ls = ['a','b','C','D','b','f']
有没有办法控制迭代器的位置?
【问题讨论】:
标签: list for-loop python-3.x iterator
使用切片:
>>> ls = ['a','b','c','d','b','f']
>>> i = ls.index('b')
>>> j = ls.index('b', i+1)
>>> ls[i+1:j] = map(str.upper, ls[i+1:j])
>>> ls
['a', 'b', 'C', 'D', 'b', 'f']
【讨论】:
就个人而言,我会使用已经建议的切片语法。但如果您有兴趣,这里有另一个解决方案(相同的运行时复杂度,更好的空间复杂度):
>>> ls = ['a','b','c','d','b','f']
>>> mode = False
>>> for i,char in enumerate(ls):
... if char == 'b':
... mode = not mode
... continue
... if mode:
... ls[i] = char.upper()
...
>>> ls
['a', 'b', 'C', 'D', 'b', 'f']
【讨论】: