将列表中的所有字符串转换为int

如何将列表中的所有字符串转换为整数?

['1', '2', '3']  ⟶  [1, 2, 3]
1512088 次浏览

给定:

xs = ['1', '2', '3']

使用map然后list获取整数列表:

list(map(int, xs))

在Python 2中,list是不必要的,因为map返回了一个列表:

map(int, xs)

在列表xs中使用列表理解

[int(x) for x in xs]

e. g.

>>> xs = ["1", "2", "3"]>>> [int(x) for x in xs][1, 2, 3]

比列表理解更扩展一点,但同样有用:

def str_list_to_int_list(str_list):n = 0while n < len(str_list):str_list[n] = int(str_list[n])n += 1return(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

这是一个简单的解决方案,并解释了您的查询。

 a=['1','2','3','4','5'] #The integer represented as a string in this listb=[] #Fresh listfor i in a: #Declaring variable (i) as an item in the list (a).b.append(int(i)) #Look below for explanationprint(b)

在这里,append()用于将项目(即此程序中字符串(i)的整数版本)添加到列表(b)的末尾。

注意:int()是一个函数,它有助于将字符串形式的整数转换回其整数形式。

输出控制台:

[1, 2, 3, 4, 5]

因此,只有当给定字符串完全由数字组成时,我们才能将列表中的字符串项转换为整数,否则将生成错误。

在获取输入时,您可以在一行中简单地执行此操作。

[int(i) for i in input().split("")]

把它分到你想要的地方。

如果您想转换列表而不是列表,只需将列表名称放在input().split("")的位置。

如果您的列表包含纯整数字符串,则接受的答案是要走的路。如果您给它非整数的东西,它将崩溃。

所以:如果你的数据可能包含int,可能是浮点数或其他东西-你可以利用自己的函数进行错误处理:

def maybeMakeNumber(s):"""Returns a string 's' into a integer if possible, a float if needed orreturns it as is."""
# handle None, "", 0if not s:return stry:f = float(s)i = int(f)return i if f == i else fexcept 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']

要在迭代器中处理迭代器,您可以使用这个助手:

from collections.abc import Iterable, Mapping
def convertEr(iterab):"""Tries to convert an iterable to list of floats, ints or the original thingfrom the iterable. Converts any iterable (tuple,set, ...) to itself in output.Does not work for Mappings  - you would need to check abc.Mapping and handlethings 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

我也想添加Python|将列表中的所有字符串转换为整数

方法#1:朴素方法

# Python3 code to demonstrate# converting list of strings to int# using naive method
# initializing listtest_list = ['1', '4', '3', '6', '7']
# Printing original listprint ("Original list is : " + str(test_list))
# using naive method to# perform conversionfor i in range(0, len(test_list)):test_list[i] = int(test_list[i])    

# Printing modified listprint ("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 listtest_list = ['1', '4', '3', '6', '7']
# Printing original listprint ("Original list is : " + str(test_list))
# using list comprehension to# perform conversiontest_list = [int(i) for i in test_list]    

# Printing modified listprint ("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 listtest_list = ['1', '4', '3', '6', '7']
# Printing original listprint ("Original list is : " + str(test_list))
# using map() to# perform conversiontest_list = list(map(int, test_list))    

# Printing modified listprint ("Modified list is : " + str(test_list))

输出:

Original list is : ['1', '4', '3', '6', '7']Modified list is : [1, 4, 3, 6, 7]

您可以使用python中的循环速记轻松地将字符串列表项转换为int项

假设你有一个字符串result = ['1','2','3']

只管去做,

result = [int(item) for item in result]print(result)

它会给你输出

[1,2,3]

下面的答案,即使是最流行的答案,也不适用于所有情况。我有一个超级耐推力str的解决方案。我有过这样的经历:

AA = ['0', '0.5', '0.5', '0.1', '0.1', '0.1', '0.1']

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, 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对象,即iterator,它将一个接一个地产生结果(值),这就是为什么我们需要添加一个名为list的函数,该函数将应用于所有可迭代项。

请参阅下图了解map函数的返回值以及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]