Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/330.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python:如何从for循环中的列表中仅减去相应的值_Python_List_Loops_Csv_Subtraction - Fatal编程技术网

Python:如何从for循环中的列表中仅减去相应的值

Python:如何从for循环中的列表中仅减去相应的值,python,list,loops,csv,subtraction,Python,List,Loops,Csv,Subtraction,我试图从总库存中减去卖出的库存,但是使用这个代码,它从列表A中的每个值中减去列表B中的每个值 我希望从列表A中的对应值中减去列表B中的对应值,然后移动到下一组数字,而不是从列表A中的每个值中减去列表B中的每个值 我不确定如何修改我的代码,我如何实现这一点 for s in stocks: for q in quantities: print(float(s) - float(q)) 我想要什么: stock: [10, 20, 30] quantities: [2, 3

我试图从总库存中减去卖出的库存,但是使用这个代码,它从列表A中的每个值中减去列表B中的每个值

我希望从列表A中的对应值中减去列表B中的对应值,然后移动到下一组数字,而不是从列表A中的每个值中减去列表B中的每个值

我不确定如何修改我的代码,我如何实现这一点

for s in stocks:
    for q in quantities:
        print(float(s) - float(q))
我想要什么:

stock: [10, 20, 30]
quantities: [2, 3, 4]

output: 8, 17, 26
stock: [10, 20, 30]
quantities: [2, 3, 4]

output: 8, 7, 6, 18, 17, 16, 28, 27, 26
发生了什么:

stock: [10, 20, 30]
quantities: [2, 3, 4]

output: 8, 17, 26
stock: [10, 20, 30]
quantities: [2, 3, 4]

output: 8, 7, 6, 18, 17, 16, 28, 27, 26

将列表理解与
zip
一起使用:

print([int(x) - int(y) for x, y in zip(stock, quantities)])
输出:

[8, 17, 26]
8
17
26
[8, 17, 26]
或者,如果需要循环:

for x, y in zip(stock, quantities):
    print(int(x) - int(y))
输出:

[8, 17, 26]
8
17
26
[8, 17, 26]
以下是:

返回元组列表,其中第i个元组包含每个参数序列或iterables中的第i个元素

或者使用
地图

print(list(map(lambda x, y: int(x) - int(y), stock, quantities)))
输出:

[8, 17, 26]
8
17
26
[8, 17, 26]
以下是:

将函数应用于iterable的每个项并返回结果列表。 您的代码无法运行,因为您正在执行以下操作:

10-2、10-3、10-4、20-2等等


因此,您在迭代
库存
,并将其减去
数量
中的每个值,而不仅仅是相应的值。

使用
zip
的列表理解:

print([int(x) - int(y) for x, y in zip(stock, quantities)])
输出:

[8, 17, 26]
8
17
26
[8, 17, 26]
或者,如果需要循环:

for x, y in zip(stock, quantities):
    print(int(x) - int(y))
输出:

[8, 17, 26]
8
17
26
[8, 17, 26]
以下是:

返回元组列表,其中第i个元组包含每个参数序列或iterables中的第i个元素

或者使用
地图

print(list(map(lambda x, y: int(x) - int(y), stock, quantities)))
输出:

[8, 17, 26]
8
17
26
[8, 17, 26]
以下是:

将函数应用于iterable的每个项并返回结果列表。 您的代码无法运行,因为您正在执行以下操作:

10-2、10-3、10-4、20-2等等


因此,您在迭代
库存
,并将其减去
数量
中的每个值,而不仅仅是相应的值。

最好首先使用字典存储数据,但对于您的用例,请尝试使用:

output = [int(stock[x]) - int(quantities[x]) for x, s in enumerate(stock)]

最好首先使用字典来存储数据,但对于您的用例,请尝试使用:

output = [int(stock[x]) - int(quantities[x]) for x, s in enumerate(stock)]

为什么要使用
枚举
那么,只需使用
范围
。枚举让我们来获取列表的索引。Range也可以,但是你不能访问每个索引的值。我知道你的意思,但是目前你没有使用列表的值,只有用于回复的索引hank,x和y都是字符串,它不允许我减去它们尝试编辑。那么为什么要使用
枚举
,只需使用
范围
。枚举让我们来获取列表的索引。范围也可以工作,但是你不能访问每个索引的值。我知道你的意思,但目前你没有使用列表的值,只有用于回复的索引hank,x和y都是字符串,它不允许我减去它们尝试编辑。感谢回复,我试过了,但似乎不起作用。x和y都是字符串,所以它们不能被减法,使用print(float(x)-float(y))似乎也不起作用,因为它打印出'2.0'和'-6.0'@18649626842568现在试试,我编辑了我的答案,如果它起作用请接受谢谢你的回复,我试过了,但似乎不起作用。x和y都是字符串,所以它们不能相减,使用print(float(x)-float(y))似乎也不起作用,因为它打印出'2.0'和'-6.0'@18649626842568现在试试,我编辑了我的答案,如果有效,请接受它