【问题标题】:Floating a double list?浮动双重列表?
【发布时间】:2013-07-18 19:28:04
【问题描述】:

我一直在看这个页面Convert Python list of strings into floats, where list also contains words

并试图实现这一点,但我不能为双重列表。

我有一个看起来像这样的双重列表

Positions = [['ace','first', '10','-29'],['best','second','200','-10']] 

这是我从打开文件中得到的。我想做的是从列表中的第二个和第三个索引点中删除字符串,以便将这两个位置都作为整数而不是字符串。有没有办法可以打开文件来删除这些字符串

有没有一种方法可以通过对我的双重列表应用方法来删除字符串??

【问题讨论】:

    标签: python string list integer


    【解决方案1】:

    您拥有的是嵌套循环。几乎是一样的:

    >>> L = [['ace','first', '10','-29'],['best','second','200','-10']]
    >>> for i in L:
    ...     i[3] = int(float(i[3]))
    ...     i[2] = int(float(i[2]))
    ...     
    ... 
    >>> print L
    [['ace', 'first', 10, -29], ['best', 'second', 200, -10]]
    

    【讨论】:

    • 嗨,我已经在另一个列表中尝试过这个,但它在某个时候不起作用,因为第二个位置涉及小数,所以它是 '10.30' 的例子。??有没有办法用小数去掉这些??
    【解决方案2】:

    获取列表的列表,其中每个子列表在Positions中每个子列表的最后两个位置都有表示的int:

    [[int(i) for i in L[-2:]] for L in Positions]
    

    Positions中整数的字符串表示形式转为ints:

    [[int(i) for i in L if ((i.startswith('-') and all(char.isdigit() for char in i)) or all(char.isdigit() for char in i) else i] for L in Positions]
    

    【讨论】:

    • 有趣但与我看到的第一个答案略有不同。我也会试试这个,看看效果如何。谢谢
    猜你喜欢
    • 1970-01-01
    • 2010-09-29
    • 2013-03-12
    • 2013-10-08
    • 1970-01-01
    • 1970-01-01
    • 2020-04-25
    • 1970-01-01
    • 2021-08-09
    相关资源
    最近更新 更多