【问题标题】:How to take a list of tuples and change the tuples from strings to integers如何获取元组列表并将元组从字符串更改为整数
【发布时间】:2019-11-16 22:30:09
【问题描述】:

我有密码

l = [('1',['3','1','2']),('2',['4','5','2'])]

我是怎么做到的:

l = [(1,[3,1,2]),(2,[4,5,2])]

【问题讨论】:

标签: python list tuples


【解决方案1】:

您可以在使用列表理解进行迭代时使用int 函数

r = [tuple([int(i),[int(k) for k in j]]) for i,j in l]

【讨论】:

    【解决方案2】:

    这可以用递归来概括:

    def to_ints(item):
        if isinstance(item, list):
            return [to_ints(e) for e in item]
        elif isinstance(item, tuple):
            return tuple(to_ints(e) for e in item)
        else:
            return int(item)
    

    【讨论】:

      【解决方案3】:

      一种简单的方法是删除引号并将其解析回列表

       l = eval(str(l).replace("'", ""))
      

      【讨论】:

      • 请不要将eval 用于此类可以使用内置功能轻松完成的事情。
      • 嗯,你可能是对的, eval 不一定是最佳实践,但在这种情况下,我看不出它有什么缺点。你能解释一下你的推理吗?
      • 有一些现有的讨论here
      • 我在发布答案之前阅读了该帖子。除了仍然不是很大差异的时间差之外,上述任何缺点都与 OPs 问题无关。实际上在这里使用 eval 可以节省在列表及其子列表上循环的时间。
      猜你喜欢
      • 2017-06-22
      • 2021-05-15
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-09-25
      • 1970-01-01
      相关资源
      最近更新 更多