[英]Assign values for objects inside a list comprehension
有一个对象列表和列表例如:
new_price = [20.00, 30.00, 45.00...]
item_list = [obj1, obj2, obj3...]
试图做这样的事情
[x.price = y for x, y in zip(item_list, new_price)]
现在,x & y 没有被检测为参数。 谢谢您的帮助
列表推导式是创建列表的便捷方式。 它不打算以您建议的方式使用。
见这里:https://docs.python.org/3/glossary.html#term-list-comprehension
一种处理序列中所有或部分元素并返回包含结果的列表的紧凑方法。 result = ['{:#04x}'.format(x) for x in range(256) if x % 2 == 0] 生成包含偶数十六进制数 (0x..) 的字符串列表,范围从 0 到255. if 子句是可选的。 如果省略,则处理 range(256) 中的所有元素。
我建议你使用for
循环。 它干净、简单,坦率地说,它比列表理解更易读。
In [1]: from dataclasses import dataclass
In [2]: @dataclass
...: class Item:
...: price: int
...:
In [3]: new_price = [20.00, 30.00, 45.00]
In [4]: a = Item(99)
In [5]: b = Item(98)
In [6]: c = Item(97)
In [7]: item_list = [a, b, c]
In [8]: for x, y in zip(item_list, new_price):
...: x.price = y
...:
In [9]: a
Out[9]: Item(price=20.0)
In [10]: b
Out[10]: Item(price=30.0)
In [11]: c
Out[11]: Item(price=45.0)
简单地:
new_price = [20.00, 30.00, 45.00...]
item_list = [obj1, obj2, obj3...]
n = min([len(new_price),len(item_list)])
for i in range(n):
item_list[i].price=new_price[i]
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.