【问题标题】:Iterate through list using for-loop while adding numbers在添加数字时使用 for 循环遍历列表
【发布时间】:2021-10-04 11:13:14
【问题描述】:
def tomtoCm(add):
    assert add > 0
    return add * 2.54



numbers = [4, 1, 20]

def numbersToCm(numbers):
     
    for i in numbers:
        convert = tomtoCm(numbers[0,1,2])
        print(convert)

numbersToCm(numbers)

我正在努力将列表中的所有数字都设为 * 2.54。我尝试过使用lenrange,但我似乎做得不太对。例如,如果我写 [0],程序会打印 10.16 三次。它不会遍历我的整个列表

【问题讨论】:

  • 您从不修改列表。而tomtoCm(numbers[0,1,2])的目的是什么?
  • 代码似乎有点乱,首先,您正在循环遍历数字列表,但重复相同的项目。因此,您需要遍历 i 而不是 [0,1,2]。另外,我不明白为什么 (tomtoCm) 和 (numbersToCm) 可以合并为一个单独的函数,从而使代码更简单

标签: python list for-loop


【解决方案1】:

使用 for-in 循环,您可以遍历列表的元素,而不是其索引。即:

for i in numbers:
    convert = tomtoCm(i)
    print(convert)

话虽如此,更惯用的方法可能是使用列表推导:

updated_list = [tomtoCm(i) for i in numbers]
print(updated_list)

【讨论】:

  • 要补充这一点,您还可以轻松修改此列表推导以完全跳过第一个函数(类似于updated_list = [ i * 2.54 for i in numbers]
  • @ZaidAlShatle True 'dat。我想保留带有附加断言的 OP 的原始函数,但它可能会是“更干净”的 python 来解开它
  • 有道理!只是想添加该注释以防 OP 看到它。干杯哥们
猜你喜欢
  • 2019-09-07
  • 2021-04-02
  • 1970-01-01
  • 1970-01-01
  • 2022-01-06
  • 2023-01-24
  • 1970-01-01
  • 2016-04-14
  • 1970-01-01
相关资源
最近更新 更多