第一次迭代后嵌套 for 循环不是 运行 in python

Nested for loop not running in python after the first iteration

我有一个嵌套的 for 循环,它在第一次迭代后不是 运行

N, M = map(int, input().split())
numbers = map(int, input().split())

dic = {}
for m in range(N):
  dic.setdefault(m,[])
  for n in numbers:
      if n % N == m:
      dic[m].append(n)
print(dic)

上面的代码正在为下面的示例数据生成以下结果{0: [3, 42], 1: [], 2: []}

3 5
1 3 8 10 42

不过我想得到 {0: [3, 42], 1: [1, 10], 2: [8]} 我做错了什么?

问题是 map returns 一个迭代器,而您在第一个外循环中完全使用了迭代器。您需要:

numbers = [int(k) for k in input().split()]

而不是使用 map

试试这个:

N, M = map(int, input().split())
numbers = [int(x) for x in input().split()]

dic = {}
for m in range(N):
    dic.setdefault(m,[])
    for n in numbers:
        print(n % N)
        if n % N == m:
            dic[m].append(n)
print(dic)