如何将列表中的所有字符串转换为整数?
['1', '2', '3'] ⟶ [1, 2, 3]
如何将列表中的所有字符串转换为整数?
['1', '2', '3'] ⟶ [1, 2, 3]
当前回答
如果您的列表包含纯整数字符串,接受的答案是要走的路。如果输入的不是整数它就会崩溃。
所以:如果你的数据可能包含int,可能是浮点数或其他东西-你可以利用你自己的函数errorhandling:
def maybeMakeNumber(s):
"""Returns a string 's' into a integer if possible, a float if needed or
returns it as is."""
# handle None, "", 0
if not s:
return s
try:
f = float(s)
i = int(f)
return i if f == i else f
except ValueError:
return s
data = ["unkind", "data", "42", 98, "47.11", "of mixed", "types"]
converted = list(map(maybeMakeNumber, data))
print(converted)
输出:
['unkind', 'data', 42, 98, 47.11, 'of mixed', 'types']
要处理可迭代对象内部的可迭代对象,你可以使用这个helper:
from collections.abc import Iterable, Mapping
def convertEr(iterab):
"""Tries to convert an iterable to list of floats, ints or the original thing
from the iterable. Converts any iterable (tuple,set, ...) to itself in output.
Does not work for Mappings - you would need to check abc.Mapping and handle
things like {1:42, "1":84} when converting them - so they come out as is."""
if isinstance(iterab, str):
return maybeMakeNumber(iterab)
if isinstance(iterab, Mapping):
return iterab
if isinstance(iterab, Iterable):
return iterab.__class__(convertEr(p) for p in iterab)
data = ["unkind", {1: 3,"1":42}, "data", "42", 98, "47.11", "of mixed",
("0", "8", {"15", "things"}, "3.141"), "types"]
converted = convertEr(data)
print(converted)
输出:
['unkind', {1: 3, '1': 42}, 'data', 42, 98, 47.11, 'of mixed',
(0, 8, {'things', 15}, 3.141), 'types'] # sets are unordered, hence diffrent order
其他回答
比列表理解更扩展一点,但同样有用:
def str_list_to_int_list(str_list):
n = 0
while n < len(str_list):
str_list[n] = int(str_list[n])
n += 1
return(str_list)
e.g.
>>> results = ["1", "2", "3"]
>>> str_list_to_int_list(results)
[1, 2, 3]
另外:
def str_list_to_int_list(str_list):
int_list = [int(n) for n in str_list]
return int_list
下面的答案,即使是最流行的答案,也并非适用于所有情况。我有这样一个解决方案的超级抗推力str。 我有这样一件事:
AA =[’0’、160。5,160。5、160。1、160。1、160。1,1 160。]
AA = pd.DataFrame(AA, dtype=np.float64)
AA = AA.values.flatten()
AA = list(AA.flatten())
AA
[0.0, 0.5, 0.5, 0.1, 0.1, 0.1]
你可以笑,但这很有效。
有几种方法可以将列表中的字符串数字转换为整数。
在Python 2中。X你可以使用地图功能:
>>> results = ['1', '2', '3']
>>> results = map(int, results)
>>> results
[1, 2, 3]
在这里,它在应用函数后返回元素列表。
在Python 3中。X,你可以使用相同的地图
>>> results = ['1', '2', '3']
>>> results = list(map(int, results))
>>> results
[1, 2, 3]
不像python 2。x,这里map函数将返回map对象,即迭代器,它将逐个产生结果(值),这就是我们进一步需要添加一个名为list的函数的原因,该函数将应用于所有可迭代项。
在python 3.x中,map函数的返回值和类型请参考下图
第三种方法在python 2中都是通用的。X和python 3。x即列表推导式
>>> results = ['1', '2', '3']
>>> results = [int(i) for i in results]
>>> results
[1, 2, 3]
在列表xs上使用一个列表推导式:
[int(x) for x in xs]
e.g.
>>> xs = ["1", "2", "3"]
>>> [int(x) for x in xs]
[1, 2, 3]
我还想添加Python |将列表中的所有字符串转换为整数
方法1:朴素法
# Python3 code to demonstrate
# converting list of strings to int
# using naive method
# initializing list
test_list = ['1', '4', '3', '6', '7']
# Printing original list
print ("Original list is : " + str(test_list))
# using naive method to
# perform conversion
for i in range(0, len(test_list)):
test_list[i] = int(test_list[i])
# Printing modified list
print ("Modified list is : " + str(test_list))
输出:
Original list is : ['1', '4', '3', '6', '7']
Modified list is : [1, 4, 3, 6, 7]
方法#2:使用列表理解
# Python3 code to demonstrate
# converting list of strings to int
# using list comprehension
# initializing list
test_list = ['1', '4', '3', '6', '7']
# Printing original list
print ("Original list is : " + str(test_list))
# using list comprehension to
# perform conversion
test_list = [int(i) for i in test_list]
# Printing modified list
print ("Modified list is : " + str(test_list))
输出:
Original list is : ['1', '4', '3', '6', '7']
Modified list is : [1, 4, 3, 6, 7]
方法#3:使用map()
# Python3 code to demonstrate
# converting list of strings to int
# using map()
# initializing list
test_list = ['1', '4', '3', '6', '7']
# Printing original list
print ("Original list is : " + str(test_list))
# using map() to
# perform conversion
test_list = list(map(int, test_list))
# Printing modified list
print ("Modified list is : " + str(test_list))
输出:
Original list is : ['1', '4', '3', '6', '7']
Modified list is : [1, 4, 3, 6, 7]