【问题标题】:Convert several separate lists to integers and get sum将几个单独的列表转换为整数并得到总和
【发布时间】:2016-07-18 19:37:08
【问题描述】:

我需要获取列表产生的元素,将它们转换为整数,然后得到它们的总和。我想使用基本的 for 循环将列表转换为整数,但不知道如何编写代码将列表转换为整数。到目前为止,我的代码中的数据如下所示:

['9085', '5174']
['7297']
['9488']
['8370', '1014', '4870']
['4719']
['3004', '4969', '2458']
['9445', '7420']
['50', '1690', '8374']

... 等等。到目前为止,我的代码如下所示:

import re
hand = open('Regex-Actual.txt')
numbers = []
for line in hand:
    line = line.rstrip()
    y= re.findall('[0-9]+',line)
    if len(y) > 0 :
        print y
numbers = [int(y) for y in numbers]
print numbers

我是 Python 的初学者,所以带有答案的解释意义重大!

【问题讨论】:

  • 数据是 Python 数组/列表吗?还是需要解析的字面量字符串?
  • 需要解析的几个单独的字符串。我猜是先转换成整数,然后加在一起求和。

标签: python regex list integer


【解决方案1】:

这个问题你真的不需要使用正则表达式,你可以轻松地从数字字符串中生成数字!

string_list = ['8370', '1014', '4870']
number_list = [int(x) for x in string_list]  # using list comprehension
sum(number_list)
# 14254

如果您从文件中读取它,您可能会以列表的字符串形式获取列表。例如,您将收到"['8370', '1014', '4870']"。以此列出清单:

import ast
lst = "['8370', '1014', '4870']"
lst = ast.literal_eval(lst)
#lst becomes ['8370', '1014', '4870']

【讨论】:

  • 嗨@PeterWang。我拥有的列表非常广泛,输出是几个单独的字符串列表。我需要将这几个单独的列表转换为整数以将它们加在一起。由于某种原因,列表理解不起作用,这可能是我输入它的方式: import re hand = open('Regex-Actual.txt') for line in hand: line = line.rstrip() y = re.findall('[0-9]+',line) if len(y) > 0 : print y numbers = [int(x) for x in y] sum (numbers)
猜你喜欢
  • 2017-11-28
  • 1970-01-01
  • 2017-04-25
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-01-24
相关资源
最近更新 更多