如何将列表转换为包含子列表的列表?python

如何将列表转换为包含子列表的列表?python,python,Python,我正在制作一个基于python的小数据库 my_list = ['jack', 'liam', 'gary', 'poly'] 我想把列表转换成这个 result = [('jack', 'liam'),('liam', 'gary'),('gary', 'poly')] 还有什么我可以做到的吗?使用列表理解 迭代到列表的倒数第二个值 以元组形式获取当前值和下一个值 或者使用zip() 它将以元组的形式返回连续的组合 my_list = ['jack', 'liam', 'gary',

我正在制作一个基于python的小数据库

my_list = ['jack', 'liam', 'gary', 'poly']
我想把列表转换成这个

result = [('jack', 'liam'),('liam', 'gary'),('gary', 'poly')]

还有什么我可以做到的吗?

使用
列表理解

  • 迭代到列表的倒数第二个值
  • 以元组形式获取当前值和下一个值
或者使用
zip()

它将以元组的形式返回连续的组合

my_list = ['jack', 'liam', 'gary', 'poly']
new_list = list(zip(my_list, my_list[1:]))

print(new_list)
>> [('jack', 'liam'), ('liam', 'gary'), ('gary', 'poly')]

zip
将从两个iterable返回一个元组;如果您采用相同的列表,但按照您的意愿进行了移动(在本例中,向前移动一个元素),则可以得到预期的结果

此外,发电机将在最短的iterable(第二个)上排气

>>[(a,b)表示(a,b)在zip中(我的列表,我的列表[1:])]
[('jack','liam'),('liam','gary'),('gary','poly')]
输出

[('jack', 'liam'), ('liam', 'gary'), ('gary', 'poly')]
我们可以将两个元素提取到一个元组中,直到迭代并到达最后一个元素。

result=[]
我的清单=['jack'、'liam'、'gary'、'poly']
对于i,枚举(我的列表)中的项:
如果i+1==len(我的_列表):中断
result.append((项目,我的列表[i+1]))
或者更具python风格和优雅的方式:

result=[(项目,我的列表[i+1]),如果i+1
输出

[('jack', 'liam'), ('liam', 'gary'), ('gary', 'poly')]

看这篇文章,似乎很相关。或者这篇文章也能有所帮助?你能在这里解释一下zip吗,这样我就可以在我的代码中添加一条注释来记住。你可以查看我的答案,也可以查看
列表(zip(my_list,my_list[1:])
也可以。效果很好
[('jack', 'liam'), ('liam', 'gary'), ('gary', 'poly')]
my_list = ['jack', 'liam', 'gary', 'poly']
result = []
for i in range(0, len(my_list)):
    if not i > len(my_list)-2:
        result.append((my_list[i], my_list[i+1]))
[('jack', 'liam'), ('liam', 'gary'), ('gary', 'poly')]