字符串= 1 2 3 4
程序应返回= [[1,2],[3,4]]
在python
我希望将字符串转换为字符串中每两个元素的列表
您可以选择非常简单的内容,例如:
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
条件,并将代码括在try
和except
中,如果您希望即使字符串的数目不能被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'))