在 Python 中使用范围函数
Using range function in Python
我是新手Python,对使用范围函数迭代字符串有疑问。
假设我需要将以下字符串中的所有内容都大写:
string = 'a b c d e f g'
我可以只写下面的代码吗?
for i in string:
i = i.upper()
return string
还是应该使用 range 函数遍历字符串中的每个元素?
最后,一个更普遍的问题是每当我需要迭代string/list中的所有元素时,我应该什么时候使用范围函数,什么时候可以只使用“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 学习点。
我是新手Python,对使用范围函数迭代字符串有疑问。
假设我需要将以下字符串中的所有内容都大写:
string = 'a b c d e f g'
我可以只写下面的代码吗?
for i in string:
i = i.upper()
return string
还是应该使用 range 函数遍历字符串中的每个元素?
最后,一个更普遍的问题是每当我需要迭代string/list中的所有元素时,我应该什么时候使用范围函数,什么时候可以只使用“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 学习点。