使用for循环来比较列表

时间:2015-06-09 09:11:15

标签: python list loops for-loop

手头的问题是我有一个列表,我需要迭代并逐一比较。

def stockcheck():
    stock = open("Stock.csv", "r")
    reader = csv.reader(stock)
    stockList = []
    for row in reader:
        stockList.append(row)

print(stockList)的输出是:

[['Product', 'Current Stock', 'Reorder Level', 'Target Stock'], ['plain blankets', '5', '10', '50'], ['mugs', '15', '20', '120'], ['100m rope', '60', '15', '70'], ['burner', '90', '20', '100'], ['matches', '52', '10', '60'], ['bucket', '85', '15', '100'], ['spade', '60', '10', '65'], ['wood', '100', '10', '200'], ['sleeping bag', '50', '10', '60'], ['chair', '30', '10', '60']]

我已经搜索了基础知识,但我没有运气......我确信解决方案很简单,但它已经逃脱了我!基本上我需要检查当前库存是否小于重新订购水平,如果是将其保存为CSV(那部分我没有问题)。

for item in stockList:
    if stockList[1][1] < stockList[1][2]:
        print("do the add to CSV jiggle")

这是我能做的尽可能多,但它没有经过迭代...任何想法?提前谢谢!

2 个答案:

答案 0 :(得分:3)

使用列表理解迭代stockList,然后打印出结果

[sl for sl in stockList[1:] if sl[1] < sl[2]]

您将获得以下结果:

[['mugs', '15', '20', '120']]

如果您想知道stockList[1:]是为了确保忽略标题。

但是,您必须注意,值是要比较的字符串。因此,将char与char进行比较。如果你想要整数比较那么你必须将字符串转换为整数,假设你绝对确定sl[1]sl[2]总是整数 - 只是表示为字符串。试试吧:

[sl for sl in stockList[1:] if int(sl[1]) < int(sl[2])]

结果发生了变化:

[['plain blankets', '5', '10', '50'], ['mugs', '15', '20', '120']]

答案 1 :(得分:0)

使用[1:]无法获取标题,然后进行比较。

for item in stockList[1:]:
    if item[1] < item[2]:
        print item
        print("do the add to CSV jiggle")