我遇到以下问题:
import java.util.*;
// our main class becomes a file but the main method is still found
public class HelloWorld
{
public static void main(String[] args)
{
foo(createList()); // T must be Object
}
private static void foo(List<Object> objs) { }
private static <T> List<T> createList() { return new ArrayList<>(); }
}
它们都返回:“int”对象不可迭代,这对我来说有点混乱。由于# Neither this
trial1 = [[x for x in 10000 // 5**i] for i in range(1, 10)]
# nor this
trial2 = [x for i in range(1, 10) for x in 10000 // 5**i]
# work.
是数组i
,因此必须是(1,2,3,...,9)
公式。那么整数10000 // 5**i
哪个不能迭代?我希望i
成为包含所有这些值的列表。
这有什么不同?
trial
如何制定列表理解陈述?
答案 0 :(得分:2)
你的工作for
循环的理解相当于:
[10000 // 5**i for i in range(1, 10)]
在该示例中没有双循环,因此理解中也不应该存在。
关于你的第二个问题; i
不是一个值为(0, 1, ... , 9)
的列表,但它是该列表中的一个整数。
答案 1 :(得分:2)
相当于
trial = []
for i in range(1, k):
trial.append(n // 5**i)
就是
trial = [10000 // 5**i for i in range(1, k)]
因为您只是在10000 // 5**i
i
range(1, k)
答案 2 :(得分:1)
for x in 10000 // 34**i
或类似的东西意味着遍历数字,这没有意义并导致错误。
您似乎试图将数字附加到列表中,这很容易:
trial = [10000 // 5**i for i in range(1, 5)]
这里你基本上是在说:
[...]
)10000//5**i
i
来自range(1, 5)