我觉得有一种简单的方法可以使这个代码功能相同,但代码行数较少。这是在python中。我目前的代码:
for(CheckNum,Product,Bin,Size,Color,Status) in records:
if CheckNum == 1:
row_1.append(CheckNum)
row_1.append(Product)
row_1.append(Size)
row_1.append(Color)
row_1.append(Status)
elif CheckNum == 2:
row_2.append(CheckNum)
row_2.append(Product)
row_2.append(Size)
row_2.append(Color)
row_2.append(Status)
elif CheckNum == 3:
row_3.append(CheckNum)
row_3.append(Product)
row_3.append(Size)
row_3.append(Color)
row_3.append(Status)
elif CheckNum == 4:
row_4.append(CheckNum)
row_4.append(Product)
row_4.append(Size)
row_4.append(Color)
row_4.append(Status)
elif CheckNum == 5:
row_5.append(CheckNum)
row_5.append(Product)
row_5.append(Size)
row_5.append(Color)
row_5.append(Status)
答案 0 :(得分:4)
rows = {1:row_1, 2:row_2, 3:row_3, 4:row_4, 5:row_5}
for ...:
rows[CheckNum].append(...)
...
答案 1 :(得分:1)
作为一般设计原则,每当您发现自己命名row_1
,row_2
,row_3
等内容时,您可能会认为应该改为数组,rows
,您可以使用它来索引而不需要大if
树。
for (check_num, product, bin, size, color, status) in records:
rows[check_num].extend((product, bin, size, color, status))
或者正如Ignacio Vasquez-Abrams指出的那样,在Python 3中你可以进一步压缩它:
for check_num, *rest in records:
rows[check_num].extend(rest)
请注意,我还将变量命名更改为符合常规Python约定,即局部变量名称应全部为小写。
答案 2 :(得分:0)
除了上述优化之外,您还可以使用"".join()
而不是单独添加。
row_1.append("".join(CheckNum, Product, Size, Color, Status))
此外,您可以使用defaultdict
collections
from collections import defaultdict
rowsDict = defaultdict(list)
for(CheckNum,Product,Bin,Size,Color,Status) in records:
rowsDict[CheckNum].append("".join((CheckNum,Product,Bin,Size,Color,Status)))