0

在 Python 3 中,如何将 'b' 之间的元素更改为大写形式。从 ls = ['a','b','c','d','b','f'] 到 ls = ['a','b','C','D','b ','F']

有没有办法控制迭代器的位置?

4

2 回答 2

1

使用切片:

>>> 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']
于 2013-07-24T05:32:40.040 回答
0

就个人而言,我会使用已经建议的切片语法。但是,如果您有兴趣,这是另一种解决方案(相同的运行时复杂度,更好的空间复杂度):

>>> 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']
于 2013-07-24T05:38:12.817 回答