如何将python列表转换为1/2行的元组列表?



输入:['a','b','c','d','e']

输出:[('a','b'),('c','d'),('e')]

如何在1或2行代码中完成?

目前我有这个:

def tuple_list(_list):
final_list = []
temp = []
for idx, bat in enumerate(_list):
temp.append(bat)
if idx%2 == 1:
final_list.append(temp)
temp = []
if len(temp) > 0: final_list.append(temp)
return final_list

tuple_list(['a','b','c','d','e'])

可以使用列表推导式。首先我们有一个步长为2的范围。使用此方法,我们将从输入列表中取出适当的片段,以获得所需的结果:

lst = ['a','b','c','d','e']
result = [tuple(lst[i:i+2]) for i in range(0, len(lst), 2)]

试试这个列表推导

x = ['a','b','c','d','e']
[(x[i],x[i+1]) for i in range(0,len(x)-1) if i%2==0]

您可以使用内置的iter()函数创建一个迭代器,并将其传递给内置的zip()函数。

l = ['a','b','c','d','e']
i = iter(l)
zip(i, i)

如果你想按3分组,你可以传递3次给zip()

zip(i, i, i)
x = ['a','b','c','d','e']
y = [tuple(x[i:i+2]) for i in range(0,len(x),2)]

你可以通过在列表上移动一个大小为2的滑动窗口来切片数组。

range(start, end, step)可以帮助你一步一步移动窗口(在你的例子中是2),而slicing可以帮助你从大列表中创建小列表。

将所有这些放入列表推导式中,就可以得到期望的输出。

相关内容

  • 没有找到相关文章

最新更新