将列表转换为字符串然后转换为整数

2024-10-03 23:19:06 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一个1550500个数字的列表,所有的数字都有引号。 示例:list('100','150','200','250')等。。。 我需要求所有数字的和,但在此之前我需要把它转换成INT

列表名称:行程列表

我的代码:

mean_tripstr = str(trip_list)
mean_trip = [int(x) for x in mean_tripstr]
print(type(mean_trip))

错误消息:

Traceback (most recent call last):
  File "projeto1.py", line 235, in <module>
    mean_trip = [int(x) for x in mean_tripstr]
  File "projeto1.py", line 235, in <listcomp>
    mean_trip = [int(x) for x in mean_tripstr]
ValueError: invalid literal for int() with base 10: '['

我做错什么了?我是新的编码。。。你知道吗


Tags: inpy示例列表forline数字mean
2条回答

必须将每个元素转换为int

mean_tripstr = map(str,trip_list)
mean_trip = list(map(int,mean_tripstr))

上面的代码使用了generator,当您只需在列表中迭代时,这种方法更有效。最后一行再次正确转换为列表。你知道吗

但是,如你所说,如果你已经有一个字符串列表,你可以做:

mean_trip = list(map(int,trip_list))

如果你知道numpy,你也可以这样做:

import numpy as np

trip_list = np.array(trip_list)

mean_trip = trip_list.astype(np.int)

Python有一个map函数,它接受一个函数和一个iterable。还有sum函数,它返回iterable的和。你知道吗

您可以使用:

sum(map(int(trip_list))

请注意,map函数不返回列表,而是返回生成器。要将其转换为列表,请使用

list(sum(map(int, trip_list)))

(这可能需要一段时间,因为它需要遍历整个列表,而您的列表相当长)。你知道吗

代码的错误是将列表转换为字符串

>>> my_list = ["5", "6"]
>>> my_list_str = str(my_list)
>>> my_list_str
"['5', '6']"
>>> type(my_list_str)
<class 'str'>
>>> type(my_list)
<class 'list'>

因此,当您尝试迭代字符串时,第一个x[,它不是一个数字(因此是异常)。你知道吗

作为旁注,使用list(map(int, a_list))[int(i) for i in a_list]

>>> c1 = "list(map(int, a_list))"
>>> c2 = "[int(i) for i in a_list]"
>>> s = "a_list = [str(i) for i in range(1000)]"
>>> import timeit
>>> timeit.timeit(c1, setup=s, number=10000)
1.9165708439999918
>>> >>> timeit.timeit(c2, setup=s, number=10000)
2.470973639999997

相关问题 更多 >