我列出了使用 len() 返回 19 的种子和水蛭
而使用这两个列表就是一个列表理解——
sldiff = [(int(seed)-int(leech)) for seed in seeds for leech in leechs]
每个元素应该是种子和水蛭之间的区别(它们是字符串,所以必须进行类型转换)
但是 len(sldiff) 返回 361!
我的问题是 - 为什么会这样,我应该怎么做才能获得所需的 sldiff 列表?
请您参考如下方法:
您正在执行双重列表理解 - 即您正在为“leechs”中的每个条目遍历整个“种子”(因此 19*19,即 361)。
似乎您真正想要做的是遍历一个列表,其中的每个条目都是来自 seeds 的相关条目和来自 leechs 的相关条目的组合。这就是 zip 所做的:
[(int(seed) - int(leech)) for seed, leech in zip(seeds, leechs)]
