使用 for 循环改变 python 数组中的元素
Altering elements in a python array using the for loop
这是为了 python 和 for 循环!我知道您可以使用其他迭代,我想知道是否有使用 FOR 循环解决此问题的方法。
如果这是重复的,我深表歉意,我不知道如何用短语来搜索它。这是一个简单的问题。
我喜欢 for 循环并经常使用它们,但是当需要在迭代时更改元素时,我似乎总是必须用编辑过的元素创建一个新数组。这是一个例子:
for item in list:
if item > 7:
item += 1
这种情况下的项目不会返回到列表中。我发现我做了这样的事情:
newlist = []
for item in list:
if item > 7:
item += 1
newlist.append(item)
这不是一个大问题,但是每次我写出类似的代码时,我都在想是否有一种更简单的方法,并且不会创建新变量。
上面的例子使用了内置的变量名,这只是一个例子,并不是任何人都应该如何实现for循环或声明变量
您可以做的事情之一
for i, item in enumerate(my_list):
if item > 7:
my_list[i] += 2
您可以使用生成器表达式或列表理解来更改原始列表:
lst = [1,3,5,7,8,9,10]
lst[:] = (i + 1 if i > 7 else i for i in lst)
print(lst)
[1, 3, 5, 7, 9, 10, 11]
使用列表组件:
lst[:] = [i + 1 if i > 7 else i for i in lst]
[:]
语法更改了原始列表。
效率也更高:
In [18]: %%timeit
my_list = list(range(10000))
for i, item in enumerate(my_list):
if item > 7:
my_list[i] += 1
....:
100 loops, best of 3: 2.04 ms per loop
In [19]: %%timeit
lst = list(range(10000))
lst[:] = (i + 1 if i > 7 else i for i in lst)
....:
1000 loops, best of 3: 1.55 ms per loop
In [20]: %%timeit
lst = list(range(10000))
lst[:] = [i + 1 if i > 7 else i for i in lst]
....:
1000 loops, best of 3: 1.28 ms per loop
这是为了 python 和 for 循环!我知道您可以使用其他迭代,我想知道是否有使用 FOR 循环解决此问题的方法。 如果这是重复的,我深表歉意,我不知道如何用短语来搜索它。这是一个简单的问题。 我喜欢 for 循环并经常使用它们,但是当需要在迭代时更改元素时,我似乎总是必须用编辑过的元素创建一个新数组。这是一个例子:
for item in list:
if item > 7:
item += 1
这种情况下的项目不会返回到列表中。我发现我做了这样的事情:
newlist = []
for item in list:
if item > 7:
item += 1
newlist.append(item)
这不是一个大问题,但是每次我写出类似的代码时,我都在想是否有一种更简单的方法,并且不会创建新变量。
上面的例子使用了内置的变量名,这只是一个例子,并不是任何人都应该如何实现for循环或声明变量
您可以做的事情之一
for i, item in enumerate(my_list):
if item > 7:
my_list[i] += 2
您可以使用生成器表达式或列表理解来更改原始列表:
lst = [1,3,5,7,8,9,10]
lst[:] = (i + 1 if i > 7 else i for i in lst)
print(lst)
[1, 3, 5, 7, 9, 10, 11]
使用列表组件:
lst[:] = [i + 1 if i > 7 else i for i in lst]
[:]
语法更改了原始列表。
效率也更高:
In [18]: %%timeit
my_list = list(range(10000))
for i, item in enumerate(my_list):
if item > 7:
my_list[i] += 1
....:
100 loops, best of 3: 2.04 ms per loop
In [19]: %%timeit
lst = list(range(10000))
lst[:] = (i + 1 if i > 7 else i for i in lst)
....:
1000 loops, best of 3: 1.55 ms per loop
In [20]: %%timeit
lst = list(range(10000))
lst[:] = [i + 1 if i > 7 else i for i in lst]
....:
1000 loops, best of 3: 1.28 ms per loop