簡體   English   中英

轉換列表中的每個第 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]

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM