Py学习  »  Python

如何将这些重复的if语句转换为python中的单个循环?

Programmer • 3 年前 • 1358 次点击  

我有这个密码:

#!/usr/bin/python3

def contract(e, i, c, n):
        l = len(e)
        grid = [[0 for i in range(i + 1)] for x in range(l)]

        for num1, row1 in enumerate(grid):
                row1[0] = e[num1] #add exponents

        for num2, row2 in enumerate(grid):
                if 0 <= num2 < n[0]:
                        grid[num2][1] = c[num2]
                if n[0] <= num2 < n[0] + n[1]:
                        grid[num2][2] = c[num2]
                if n[0] + n[1] <= num2 < n[0] + n[1] + n[2]:
                        grid[num2][3] = c[num2]

        for g in grid:
                print(g)

e = [0, 1, 2, 3]
i = 3
c = [4, 5, 6, 7]
n = [1, 2, 1]

contract(e, i, c, n)

这段代码的想法是,我有一个二维网格 len(e) x (i + 1) e 。其余列应包含系数 c 以这样的方式 n 确定系数在栅格中的位置。例如,自从 n[0] = 1 ,第1列,网格中的第0行包含数字4。下一个元素 N 是2,所以网格中的下一列(第2列)应该包含2个数字,这意味着我之前使用的行下面的行中有数字5和6(这意味着已经使用了第1行和第2行,因为已经使用了第0行)。 n[2] = 1 所以 grid[3][3] = 7

我用重复的if语句实现了这一点,代码运行良好,输出结果如下:

[0, 4, 0, 0]
[1, 0, 5, 0]
[2, 0, 6, 0]
[3, 0, 0, 7]

然而,我想制作一个通用代码,可以对任意数量的系数和指数执行此操作。如何将这些重复的if语句转换为单个循环?

Python社区是高质量的Python/Django开发社区
本文地址:http://www.python88.com/topic/130972
 
1358 次点击  
文章 [ 2 ]  |  最新文章 3 年前