将一个连接的整数列表拆分为其原始形式

Splitting a joined list of integers to its original form

我正在尝试解决我面临的问题。我想将整数列表转换为单个整数(加入列表的所有元素),然后将它们拆分为原始形式。例如对于下面的代码(假设我有一个处理 y 和列表​​的索引的函数)所以如果为 y

输入 'chart'
 y = list(input("enter name"))
 List=[1,2,3,4,5]
 for i,p in enumerate(List):
     y[i] = p
 print('list is'y)
 s = int(''.join([str(int) for int in List]))

 print('joined form of the list is', s)

 def dec():
     t = [', '.join([str(int) for int in List])]

     print('original form is', t)
 dec()

我希望输出为

 List is [1, 2, 3, 4, 5]
 joined form of the list is 12345
 original form is [1, 2, 3, 4, 5]

我得到的是单个字符串,而不是原始形式。我该如何解决?

您的代码 returns 一个包含 1 个元素的列表,它是您列表的字符串表示形式:

>>> [', '.join([str(i) for i in l])]
['1, 2, 3, 4, 5']

改用:

l = [1, 2, 3, 4, 5]

# encode from list
n = int(''.join([str(i) for i in l]))

# decode from number
o = [int(i) for i in str(n)]

输出:

>>> l
[1, 2, 3, 4, 5]

>>> n
12345

>>> o
[1, 2, 3, 4, 5]

你可以通过 for 循环将它们全部放在一起,并将先前的结果乘以 10 并添加现有数字

# your code goes here
array = [1,2,3,4,5]
result = 0
for digit in array:
    result = result*10+digit

print(result)

输出

12345

你几乎做对了。您需要做的就是将 t = [', '.join([str(int) for int in List])] 更改为 t = [int(i) for i in List]

y = list(input("enter name"))
List=[1,2,3,4,5]
for i,p in enumerate(List):
    y[i] = p
print('list is',y)
s = int(''.join([str(int) for int in List]))

print('joined form of the list is', s)

def dec():
    t = [int(i) for i in List]

    print('original form is', t)
dec()

int 是 python 中的一个函数(它将您提供的字符串转换为整数)。我建议不要使用该词来指定一个变量,无论其寿命有多短。

现在,字符串class的join方法是一个函数,returns一个字符串由迭代器(这里是你的整数列表)的所有元素组成,由字符串分隔.那么,您正在使用该代码行做什么:

t = [', '.join([str(int) for int in List])]

正在制作一个由一个元素组成的列表,该字符串由列表中的所有元素组成,以逗号分隔。

如果您想将所有整数转换为字符串并从中创建一个列表,您应该跳过“连接”部分:

t = [str(i) for i in yourList]

如果您想从字符串中取回整数列表,您可以按照 Corralien or Bruno 的建议进行操作。