问题的提出和解决方案概述
这篇文章将告诉你如何在Python中把一个整数转换成一个列表。
Python 有几个内置的数据类型结构:其中之一是一个 列表.列表数据结构是由方括号 ([]
) 组成的,其中包含用逗号 (,
) 分隔的元素。这些元素可以由字符串、整数、浮点数、混合类型或其它数据结构组成,比如一个 李 列表。
列表样本
字符串的列表 | ['星期一', '星期二', '星期三'] |
整数列表 | [12, 45, 56] |
浮点数列表 | [5.67, 7.89, 87.24] |
混合列表 | ['牛奶', 2, 12.98]。 |
列表的列表 | [[2, 4, 5], [6, 7, 8], [8, 9, 1]] |
为了好玩,让我们把月球的周长(10,921公里)转换成一个整数的列表。
注意:在从Integer创建List of Lists之前,必须将其转换为String,因为Strings是可迭代的。整数不是。
问题 :我们如何编写代码将一个整数转换成一个列表?
我们可以通过以下方法之一来完成这项任务。
- 方法1 :使用List Comprehension
- 方法2 :使用列表和
map()
- 方法3 :使用List Comprehension和List
- 方法4:使用for循环
- 方法5:使用
*
和map()
- 方法6:使用
math
图书馆
方法1:使用List Comprehension
这个例子使用List Comprehension将一个整数转换成一个字符串,提取每个元素并将其转换成一个整数的List。
cir_moon = 10921
cir_list = [int(x) for x in str(cir_moon)]
print(cir_list)
上面声明了月球的周长(以公里为单位),并将其作为一个整数保存到cir_moon
。
接下来,使用List Comprehension。 这就把cir_moon
转换为一个字符串(str(cir_moon)
),允许进行迭代。然后,每个元素被提取出来,转换成一个整数(int(x))
),并附加到cir_list
。
结果以整数列表的形式输出到终端。
[1, 0, 9, 2, 1] |
方法2:使用list和map()
这个例子使用List和 map()
函数将一个整数转换为一个字符串,提取每个元素并将其转换为一个整数的列表。
cir_moon = 10921
cir_list = list(map(int, str(cir_moon)))
print(cir_list)
上面声明了月球的周长(单位:km),并将其保存到cir_moon
。
接下来,调用 map()
函数被调用,并将cir_moon
转换为一个字符串 (str(moon)
)。然后,每个元素被转换为一个整数 (int
)。
如果在这个时候输出到终端,将显示一个 map()
对象,将显示类似于下面的内容。
<map object at 0x000001E5DC37BFD0> |
然而,这些结果被转换为一个列表,保存到cir_list
,并作为一个整数列表输出到终端。
[1, 0, 9, 2, 1] |
方法3:使用List Comprehension和List
本例使用List Comprehension和List将一个整数转换为一个字符串,提取每个元素并将其转换为一个整数的List。
cir_moon = str(10921)
cir_list = [int(x) for x in list(cir_moon)]
print(cir_list)
上面声明了月球的周长(以公里为单位),将这个值(10921
)转换为字符串表示,并将其保存到cir_moon
,使其可迭代。
接下来,使用列表理解法。 然后,cir_moon
被转换为一个字符串的列表(list(cir_moon)
)。
['1', '0', '9', '2', '1'] |
然后每个字符串元素被转换为一个整数 (int(x)
) 并附加到cir_list
。
结果以整数列表的形式输出到终端。
[1, 0, 9, 2, 1] |
方法4:使用For循环
这个例子使用For循环来遍历一个字符串,并将其转换为一个的整数列表。
cir_moon = str(10921)
cir_list = []
for c in cir_moon:
cir_list.append(int(c))
print(cir_list)
上面声明了月球的周长(以公里为单位),将这个值(10921
)转换为一个字符串,并将其保存到cir_moon
,使其可以迭代。然后,创建一个空的列表,cir_list
。
接下来,一个For循环被实例化,以遍历cir_moon
中的元素。每个元素都被访问,转换为一个整数(int(c)
),并附加到cir_list
。
结果以整数列表的形式输出到终端。
[1, 0, 9, 2, 1] |
方法5:使用*和map()
这个例子使用*
操作符和 map()
来遍历一个字符串,并将其转换为一个的整数列表。
cir_list = [*map(int, str(10921))]
print(cir_list)
这是一个解决上述问题的紧凑而有效的方法!
臭名昭著的*(或解包)操作符从任何可迭代对象中解包所有的值。在本例中,字符串,10921
。每个元素都被提取出来,转换为整数 (int
),附加并保存到cir_list
。
结果以整数列表的形式输出到终端。
[1, 0, 9, 2, 1] |
方法6:使用数学库
使用该库的好处是 math
库和 math.ceil()
和 math.log()
函数的好处是,你不必在执行之前将整数转换成字符串。
cir_moon = 10921
x = [(cir_moon//(10**i))%10 for i in range(math.ceil(math.log(cir_moon, 10))-1, -1, -1)]
print(x)
上面声明了月球的周长(以公里为单位),并将其保存到cir_moon
。
接下来,List Comprehension是与 math.ceil()
和 math.log()
来提取一个整数的独立数字。瞬间完成,无需转换为字符串!
结果以整数列表的形式输出到终端。
[1, 0, 9, 2, 1] |
摘要
这(6)种将整数转换为列表的方法应该给你足够的信息来选择最适合你编码要求的方法。