遍历多个不同长度的列表时索引不足

时间:2020-10-27 20:14:37

标签: python list

我正在做一个python挑战,需要我遍历多个列表,每个元素一个时间,并根据它返回一些计算。我有类似的列表:

a = [2,3,4,5]
b = [7,8,9,0,7]
c = [a, b]

我需要以专栏的方式遍历它们,就像这样:

2 3 4
7 8 9...

由于itertools,我已经看到许多人能够做到这一点,但是我无法导入任何库。我的问题是,使用当前的解决方案,对于大于当前列表元素的值,我的第二个索引超出范围,并且我无法找到一个条件来避免这种情况的发生。 我已经试过切片列表,但是如果我不这样做的话,我会更快。这是我的代码供您参考,其中players [i] [rounds]返回的列样式如我之前所述。

while not(0 in dim_hands):
        for i in range(0, 4):
            if rounds > len(players[i]):
                #do something
        
            word = (players[i][rounds])
            num_letters = num_letters - word
        
            if num_letters < 0:
                dim_hands[i] -= abs(num_letters)
                num_letters = 0

        rounds += 1

还有其他方法吗?谢谢!

1 个答案:

答案 0 :(得分:0)

使用itertoolsnumpy会更快,但是由于您无法使用任何导入,因此请使用老式的方法进行解决:

我们将从准备要迭代的数据的长度开始,将其设为两个列表之间的最小长度,这样我们就不会出现异常:

min_length = min(len(a), len(b))

然后,我们将迭代长度并一次打印两个数组:

for i in range(min_length):
    print(f'{a[i]}, {b[i]}')

这样,我们保证我们只会在两个数组中的位置都打印元素。

我希望这是您的目标,否则请详细说明,我会修复:)