Python:如何从for循环中的列表中仅减去相应的值
我试图从总库存中减去卖出的库存,但是使用这个代码,它从列表A中的每个值中减去列表B中的每个值 我希望从列表A中的对应值中减去列表B中的对应值,然后移动到下一组数字,而不是从列表A中的每个值中减去列表B中的每个值 我不确定如何修改我的代码,我如何实现这一点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
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现在试试,我编辑了我的答案,如果有效,请接受它