将字符串转换为字符串中每两个数字的列表

字符串= 1 2 3 4

程序应返回= [[1,2],[3,4]] 在python

我希望将字符串转换为字符串中每两个元素的列表

gangzai981760123 回答:将字符串转换为字符串中每两个数字的列表

您可以选择非常简单的内容,例如:

s = "10 2 3 4 5 6 7 8"
l = []
i = 0
list_split_str = s.split()  # splitting the string according to spaces
while i < len(s) - 1:
    l.append([s[i],s[i + 1]])
    i += 2

这应该输出:

[['10','2'],['3','4'],['5','6'],['7','8']]

您还可以通过两层来做一些类似的事情:

list_split = s.split()  # stripping spaces from the string
l = [[a,b] for a,b in zip(list_split[0::2],list_split[1::2])]

此处的切片表示第一个列表从索引0开始,步长为2,因此等于[10,3,5,...]。第二个意味着它从索引1开始并具有两个步长,因此等于[2,4,6,...]。因此,我们在第一个列表中迭代a的值,在第二个列表中迭代b的值。

zip返回每个列表中元素的元组列表。在这种情况下,[('10','2'),('3','4'),('5','6'),...]。它使我们能够将列表中的元素两两地分组,并对其进行迭代。

这也适用于长度为奇数的列表。 例如,使用s = "10 2 3 4 5 6 7 ",上面的代码将输出:

[['10','6']]

因为没有好友,所以忽略了7。

,

如果数字的精确长度可以被2整除,这就是解决方案

def every_two_number(number_string):
    num = number_string.split(' ')
    templist = []
    if len(num) % 2 == 0:
        for i in range(0,len(num),2):
            templist.append([int(num[i]),int(num[i+1])])
    return templist

print(every_two_number('1 2 3 4'))

您可以删除if条件,并将代码括在tryexcept中,如果您希望即使字符串的数目不能被2整除,仍然可以转换字符串

def every_two_number(number_string):
    num = number_string.split(' ')
    templist = []
    try:
        for i in range(0,int(num[i+1])])
    except:
        pass
    return templist

print(every_two_number('1 2 3 4 5'))
本文链接:https://www.f2er.com/3137190.html

大家都在问