【发布时间】:2013-12-16 00:34:40
【问题描述】:
我有一个整数列表:
l1 = [8, 2, 2, 6, 10, 14, 18, 2]
如何测试个位数?如果不是个位数,则拆分为个位数
for i in l1:
if len(i) > 1:
something
所以新列表是:
l1 = [8, 2, 2, 6, 1, 0, 1, 4, 1, 8, 2]
【问题讨论】:
标签: list python-2.7 int
我有一个整数列表:
l1 = [8, 2, 2, 6, 10, 14, 18, 2]
如何测试个位数?如果不是个位数,则拆分为个位数
for i in l1:
if len(i) > 1:
something
所以新列表是:
l1 = [8, 2, 2, 6, 1, 0, 1, 4, 1, 8, 2]
【问题讨论】:
标签: list python-2.7 int
你可以使用字符串:
list(''.join(map(str, l1)))
它将数字转换为字符串,将它们全部连接起来,然后得到一个字符列表。
>>> l1 = [8, 2, 2, 6, 10, 14, 18, 2]
>>> list(''.join(map(str, l1)))
['8', '2', '2', '6', '1', '0', '1', '4', '1', '8', '2']
【讨论】:
也许是一个生成器:
def split_digits(numbers):
for number in numbers:
for digit in str(number):
yield int(digit)
print list(split_digits([8, 2, 2, 6, 10, 14, 18, 2]))
【讨论】:
您可以将每个元素转换为字符串,然后添加每个字符
l1 = [8, 2, 2, 6, 10, 14, 18, 2]
l2 = []
for i in l1:
s = str(i)
for digit in s:
l2.append(int(digit))
【讨论】:
如果不使用字符串,像这样的东西呢:
def convert(my_list):
new_list = []
for ele in my_list:
new_list.extend(split(ele))
return new_list
def split(x):
if x == 0:
return [0]
result = []
while x:
result.append(x % 10)
x /= 10
return result[::-1]
结果:
>>> convert(l1)
[8, 2, 2, 6, 1, 0, 1, 4, 1, 8, 2]
>>> convert([133, 34, 0, 44])
[1, 3, 3, 3, 4, 0, 4, 4]
【讨论】:
for i, num in enumerate(nums):
nums[i:i+1] = [int(d) for d in str(num)]
【讨论】: