这是for python和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循环或声明变量
答案 0 :(得分:5)
你可以做的一件事
for i, item in enumerate(my_list):
if item > 7:
my_list[i] += 2
答案 1 :(得分:1)
您可以使用生成器表达式或列表推导来更改原始列表:
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]
使用列表comp:
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