【发布时间】:2019-12-24 03:41:11
【问题描述】:
我正在尝试将 for 循环 (A) 重新创建为列表理解。我认为这里的问题是需要对 ni 执行太多函数,即对其进行平方,然后在附加到 nn 之前确保它是一个整数。
列表推导 (B) 试图让列表推导获取一个字符串 (m) 并将每个单独的数字平方为整数。问题是它需要将每个数字作为字符串进行迭代,然后将自身平方为单独的整数。
一个
n = str(2002)
nn = []
for x in range(len(n)):
ni = n[x]
ns = int(ni)**2
nn.append(ns)
print(nn)
[4, 0, 0, 4]
B
m = str(9119)
mm = [(int(m[x]))**2 for x in m]
TypeError:字符串索引必须是整数
这让我觉得 A 不能作为列表理解来完成?希望了解您对替代方案和/或直接解决方案的想法。
【问题讨论】:
-
你为什么要
m[x]?您已经在迭代for x in m,所以只需执行int(x)。将循环转换为列表理解非常简单,而且您非常接近。你的问题是你改变了你的循环。在 A 中你做for x in range(len(n))但在 Bfor x in m。要么做int(x)**2 for x in m要么int(m[x])**2 for x in range(len(m)),但坚持一个...... -
谢谢,我的困惑是我不知道 range() 和列表理解之间的区别
标签: python python-3.x syntax list-comprehension