转换列表中的每个第 n 个元素
Convert every nth element in a list
我想将十进制值转换为浮点值。预先感谢您提供解决方案。
我的列表是这样的:
data = [('CUS002', 'ARTNUM423', 'Product 1234', Decimal('12.75'), 10), ('CUS005', 'ARTNUM784', 'Product 54628', Decimal('24.95'), 9)]
结果应该是这样的:
data = [('CUS002', 'ARTNUM423', 'Product 1234', 12.75, 10), ('CUS005', 'ARTNUM784', 'Product 54628', 24.95, 9)]
我尝试用这个解决它
data = [float(x[3]) for x in data]
不太行。我确信解决方案很简单,但我现在完全被阻止了。
使用理解创建一个新的元组列表:
>>> [tuple(x if i!=3 else float(x) for i, x in enumerate(t)) for t in data]
[('CUS002', 'ARTNUM423', 'Product 1234', 12.75, 10),
('CUS005', 'ARTNUM784', 'Product 54628', 24.95, 9)]
元组是不可变的,因此为了工作,需要创建新的元组:
from decimal import Decimal
data = [('CUS002', 'ARTNUM423', 'Product 1234', Decimal('12.75'), 10),
('CUS005', 'ARTNUM784', 'Product 54628', Decimal('24.95'), 9)]
result = [(a, b, c, float(d), e) for a, b, c, d, e in data]
print(result)
替代的较短版本,使用扩展的可迭代解包:
result = [(*head, float(d), e) for *head, d, e in data]
我想将十进制值转换为浮点值。预先感谢您提供解决方案。
我的列表是这样的:
data = [('CUS002', 'ARTNUM423', 'Product 1234', Decimal('12.75'), 10), ('CUS005', 'ARTNUM784', 'Product 54628', Decimal('24.95'), 9)]
结果应该是这样的:
data = [('CUS002', 'ARTNUM423', 'Product 1234', 12.75, 10), ('CUS005', 'ARTNUM784', 'Product 54628', 24.95, 9)]
我尝试用这个解决它
data = [float(x[3]) for x in data]
不太行。我确信解决方案很简单,但我现在完全被阻止了。
使用理解创建一个新的元组列表:
>>> [tuple(x if i!=3 else float(x) for i, x in enumerate(t)) for t in data]
[('CUS002', 'ARTNUM423', 'Product 1234', 12.75, 10),
('CUS005', 'ARTNUM784', 'Product 54628', 24.95, 9)]
元组是不可变的,因此为了工作,需要创建新的元组:
from decimal import Decimal
data = [('CUS002', 'ARTNUM423', 'Product 1234', Decimal('12.75'), 10),
('CUS005', 'ARTNUM784', 'Product 54628', Decimal('24.95'), 9)]
result = [(a, b, c, float(d), e) for a, b, c, d, e in data]
print(result)
替代的较短版本,使用扩展的可迭代解包:
result = [(*head, float(d), e) for *head, d, e in data]