在Python中使用范围函数

问题描述 投票:0回答:2

我是 Python 新手,有一个关于使用 range 函数迭代字符串的问题。

假设我需要将以下字符串中的所有内容大写:

string = 'a b c d e f g'

我可以直接写下面的代码吗?

for i in string:
    i = i.upper()
return string

或者我应该使用 range 函数来迭代字符串中的每个元素?

最后,一个更普遍的问题是,每当我需要迭代字符串/列表中的所有元素时,什么时候应该使用 range 函数,什么时候可以只使用“for”循环?

python loops for-loop range
2个回答
0
投票

字符串是一个不好的例子,因为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 学习的一个关键点。


0
投票
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)
© www.soinside.com 2019 - 2024. All rights reserved.