![](/img/trans.png)
[英]My iteration will only return the last item in my list, not return each item one at a time to pass to another function for use in a master list
[英]my function only returns the last item in a list
我正在尝试从csv文件读取一些数据。 问题在于,仅当print(a)在“ if”块下时才显示该列表,否则仅显示列表中的最后一项
def products_per_command():
a=[]
with open('commande_client.csv') as csv_file:
Numero_commande=input ('entrez le numero de la commande que vous cherchez :' )
csv_reader = csv.reader(csv_file, delimiter=';')
for row in csv_reader:
for i in row:
if (i==Numero_commande):
a=[row[2],row[4]]
print(a)
输出是:
entrez le numero de la commande que vous cherchez :1
['af23', '150']
['ab12', '500']
['ab12', '214']
['af12', '21']
['ab12', '526']
['ab12', '223']
那就是我真正想要的,但是当我将“ print(a)”放在函数的末尾(不在任何循环或“ if”下)时,它仅显示最后一项:
['ab12', '223']
使用list.append
def products_per_command():
a=[]
with open('commande_client.csv') as csv_file:
Numero_commande=input ('entrez le numero de la commande que vous cherchez :' )
csv_reader = csv.reader(csv_file, delimiter=';')
for row in csv_reader:
for i in row:
if (i==Numero_commande):
a.append([row[2],row[4]])
print(a)
if (i==Numero_commande):
a=[row[2],row[4]]
print(a)
由于这部分在循环内,因此每次迭代都将新值设置为a
。 如果在循环中打印它,则在每次迭代时都会打印a
及其当前值,从而在输出中提供整个预期列表。 请注意,组合列表永远不会一次保存在内存中。
但是,如果你打印a
外循环, a
将你分配给它的最后一次迭代的值。
就像其他人所说的那样,您想使用a.append()
而不是a = ...
因为这会添加到列表中而不是覆盖它。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.