繁体   English   中英

为列表推导中的对象赋值

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM