【问题标题】:Editing list using for loop使用 for 循环编辑列表
【发布时间】:2019-10-08 03:33:05
【问题描述】:

我想更改此列表中的所有数字,以便它将 1.5 添加到小于 0 的任何数字,直到它们大于 0,但是,我不明白为什么它会产生一个非常奇怪的输出([1 , 1, 1, 1, -3.5, -2.5, -4, -5, 0.5])


for i in y:
    if i<0:
        y[i] = i+1.5

print (y)

【问题讨论】:

  • y的初始值是多少?

标签: python arrays list for-loop


【解决方案1】:

您正在混合列表的索引和元素。 而且你需要一段时间而不是“如果”来继续前进,直到达到想要的数字。

试试这样的:

for i in range(len(y)):
    while y[i] < 0:
        y[i]+=1.5

【讨论】:

  • 如果我想将一个相当复杂的函数(如 ai+bi^2)应用于小于 0 的 y[i] 和 'a '每次使用都会减少一半? (我正在阅读有关嵌套循环的内容,但我还没有在课堂上学习它们......)
  • 抱歉,不确定您需要什么,但要在每次迭代中将数字减半,您可以在循环中使用:“a/=2”。这样,每次循环时,a 除以 2
【解决方案2】:

你可以使用模数:

for i, n in enumerate(y):
    if n < 0:
        y[i] %= 1.5

【讨论】:

  • 如果我想将一个相当复杂的函数(如 ai+bi^2)应用于小于 0 的 y[i] 和 'a '每次使用都会减少一半? (我正在阅读有关嵌套循环的内容,但我还没有在课堂上学习它们......)
【解决方案3】:

默认情况下,Python 按值迭代。要按索引进行迭代,您必须创建一个索引列表并遍历 that。你可以使用内置的range()

for i in range(len(y)):
    while y[i] < 0:
        y[i] += 1.5
print(y)

【讨论】:

  • 如果我想将一个相当复杂的函数(如 ai+bi^2)应用于小于 0 的 y[i] 和 'a '每次使用都会减少一半? (我正在阅读有关嵌套循环的内容,但我还没有在课堂上学习它们......)
  • 在这种情况下,我会在嵌套的while 循环之前声明a = some_value,然后在嵌套循环中每次都减少它。这样,for 循环的每次迭代都会被重置。嵌套循环不需要解释 - 它们的工作方式与您预期的完全一样。
【解决方案4】:

这是另一个使用this method的解决方案:

>>> x = [1, 1, 1, 1, -3.5, -2.5, -4, -5, -0.5]
>>> x = [i if i>0 else ((i%-1.5)+1.5) for i in x]
>>> print(x)
[1, 1, 1, 1, 1.0, 0.5, 0.5, 1.0, 1.0]

【讨论】:

    【解决方案5】:
    for i in range(len(your_list)):
        if your_list[i] < 0:
        your_list[i] += 1.5
    print(your_list)
    

    【讨论】:

    • 如果你想在 your_list 中使用 foreach for i 的方式:如果 i
    猜你喜欢
    • 2021-06-20
    • 1970-01-01
    • 2022-11-23
    • 2019-12-23
    • 1970-01-01
    • 2014-08-05
    • 2022-01-06
    • 2010-12-01
    • 1970-01-01
    相关资源
    最近更新 更多