我是 Python 新手,有一个关于使用 range 函数迭代字符串的问题。
假设我需要将以下字符串中的所有内容大写:
string = 'a b c d e f g'
我可以直接写下面的代码吗?
for i in string:
i = i.upper()
return string
或者我应该使用 range 函数来迭代字符串中的每个元素?
最后,一个更普遍的问题是,每当我需要迭代字符串/列表中的所有元素时,什么时候应该使用 range 函数,什么时候可以只使用“for”循环?
字符串是一个不好的例子,因为Python中的字符串无法更改。 你必须建立一个新的:
new = ''
for i in string:
new += i.upper()
为了举例,我们都将忽略
new = string.upper()
将在一个语句中执行此操作这一事实。
通常,当您迭代对象时,您会收到对成员的引用。 您无法更改容器对象,但如果内部对象是可变的,则可以更改它。 考虑这个愚蠢的例子:
a = [[1],[2],[3],[4]]
for element in a:
element[0] *= 2
这将导致
a
成为 [[2],[4],[6],[8]]
,因为我们可以修改这些内部列表。 我们无法更改外部列表。
作为一般规则,如果您发现自己在写
for i in range(len(xxx)):
,那么有更好的方法来做到这一点。这并不总是正确的,但它是 Python 学习的一个关键点。
string="a b c d e f g h"
print(len(string))
new_string=""
for letter in range(0,15):
new_string+= string[letter].capitalize()
print(new_string)