Python 从列表到元组列表的转换

Python 从列表到元组列表的转换,python,list,tuples,Python,List,Tuples,我是Python的新手。例如,我可以将列表更改为元组 li = [1] tuple(li) 我试图创建一个元组,给出项目及其位置,这样一个元组就会出现(1,0)。我不知道如何开始。如果你想要一个元组的元组,你可以使用这样的生成器表达式 li = [4, 5, 6] tuple((li[i], i) for i in range(len(li))) [(li[i], i) for i in range(len(li))] 或列举 tuple((v, k) for k,v in enumera

我是Python的新手。例如,我可以将列表更改为元组

li = [1]
tuple(li)

我试图创建一个元组,给出项目及其位置,这样一个元组就会出现
(1,0)
。我不知道如何开始。

如果你想要一个元组的元组,你可以使用这样的生成器表达式

li = [4, 5, 6]
tuple((li[i], i) for i in range(len(li)))
[(li[i], i) for i in range(len(li))]
或列举

tuple((v, k) for k,v in enumerate(li))
[(v,k) for k, v in enumerate(li)]
两者都将回归

((4, 0), (5, 1), (6, 2))
[(4, 0), (5, 1), (6, 2)]
如果需要元组列表,可以使用如下列表理解表达式:

li = [4, 5, 6]
tuple((li[i], i) for i in range(len(li)))
[(li[i], i) for i in range(len(li))]
或列举

tuple((v, k) for k,v in enumerate(li))
[(v,k) for k, v in enumerate(li)]
两者都将回归

((4, 0), (5, 1), (6, 2))
[(4, 0), (5, 1), (6, 2)]

如果需要元组的元组,可以使用如下生成器表达式:

li = [4, 5, 6]
tuple((li[i], i) for i in range(len(li)))
[(li[i], i) for i in range(len(li))]
或列举

tuple((v, k) for k,v in enumerate(li))
[(v,k) for k, v in enumerate(li)]
两者都将回归

((4, 0), (5, 1), (6, 2))
[(4, 0), (5, 1), (6, 2)]
如果需要元组列表,可以使用如下列表理解表达式:

li = [4, 5, 6]
tuple((li[i], i) for i in range(len(li)))
[(li[i], i) for i in range(len(li))]
或列举

tuple((v, k) for k,v in enumerate(li))
[(v,k) for k, v in enumerate(li)]
两者都将回归

((4, 0), (5, 1), (6, 2))
[(4, 0), (5, 1), (6, 2)]

如果只需要一个元组,可以执行以下操作:

li = (list[1], 1)
这里的括号是元组的文字语法

如果要对列表中的所有元素执行此操作,可以使用列表理解:

lis = [(list[i], i) for i in range(len(list))]

如果每个元组都有元素及其索引,则会创建一个元组列表。

如果只需要一个元组,可以执行以下操作:

li = (list[1], 1)
这里的括号是元组的文字语法

如果要对列表中的所有元素执行此操作,可以使用列表理解:

lis = [(list[i], i) for i in range(len(list))]

如果每个元组都有元素及其索引,则会创建一个元组列表。

一种可能的方法是

印刷品

[(0, 10), (1, 20), (2, 30)]
如果希望输出符合(项目、位置)顺序,可以使用

[(v, k) for k,v in enumerate(li)]

一种可能的方法是使用

印刷品

[(0, 10), (1, 20), (2, 30)]
如果希望输出符合(项目、位置)顺序,可以使用

[(v, k) for k,v in enumerate(li)]
只需翻转元素和索引,就可以使用:

> li = [2, 4, 6]
> [(x, i) for i, x in enumerate(li)]
[(2, 0), (4, 1), (6, 2)]
只需翻转元素和索引,就可以使用:

> li = [2, 4, 6]
> [(x, i) for i, x in enumerate(li)]
[(2, 0), (4, 1), (6, 2)]

zip
范围是另一个选项:

In [4]: li = [2,4,6]

In [5]: zip(li, range(len(li)))
Out[5]: [(2, 0), (4, 1), (6, 2)]

zip
范围是另一个选项:

In [4]: li = [2,4,6]

In [5]: zip(li, range(len(li)))
Out[5]: [(2, 0), (4, 1), (6, 2)]


enumerate(li)
为您提供翻转元组所需的信息。
enumerate(li)
为您提供翻转元组所需的信息。OP想要的是元组,而不是列表。您能再解释一下吗?[10,20,30]输入列表的预期输出是什么?预期输出是[(10,0),(20,1),(30,2)]。它看起来像enumerate和zip工作,但我正在尝试使用传统的循环,因为我刚刚开始学习语言,需要先学习开始代码技术,然后再进入更高级、更简化的技术。OP想要一个元组,而不是列表。您能再解释一下吗?[10,20,30]输入列表的预期输出是什么?预期输出是[(10,0),(20,1),(30,2)]。它看起来像enumerate和zip工作,但我正在尝试使用传统的循环,因为我刚刚开始使用该语言,需要先学习开始代码技术,然后再进入更高级、简化的技术。这通常被认为是一种不好的做法。考虑使用<代码>枚举< /代码>。我还使用枚举表达式添加了一个使用生成器表达式的选项。而且还添加了列表理解版本。这通常被认为是一种不好的做法。考虑使用<代码>枚举< /代码>。我还使用枚举表达式添加了一个使用生成器表达式的选项。还添加了列表理解版本。这很有效。如果我想像在R中那样做一个传统的for循环,该怎么办?我翻转代码,将I放入范围(len(list)):lis=[(list[I],I)],它给出列表中的最后一个元组。我知道我需要一些代码来将每个元组添加到列表中,但我一直在获取将出现的第一个或最后一个元组。我认为您的想法是正确的。循环的每次迭代都会给您一个不同的元组。如果您尝试在循环之外使用lis,它将等于输入列表中的最后一个元组,因为这是它在循环的最后一次迭代中的值。如果你想把每个元组添加到一个列表中,你可以在每次迭代中追加()它们。所以我尝试了这样的方法:对于范围内的m(len(li)):lis=[(list[m],m)]lis.append(m),但不断得到一个错误。我是否正确使用了append?在循环外创建一个单独的数组,然后将元组附加到该数组中。lis是你的元组,m只是一个数字。因此,您希望将其改为array.append(lis)。这很有效。如果我想像在R中那样做一个传统的for循环,该怎么办?我翻转代码,将I放入范围(len(list)):lis=[(list[I],I)],它给出列表中的最后一个元组。我知道我需要一些代码来将每个元组添加到列表中,但我一直在获取将出现的第一个或最后一个元组。我认为您的想法是正确的。循环的每次迭代都会给您一个不同的元组。如果您尝试在循环之外使用lis,它将等于输入列表中的最后一个元组,因为这是它在循环的最后一次迭代中的值。如果你想把每个元组添加到一个列表中,你可以在每次迭代中追加()它们。所以我尝试了这样的方法:对于范围内的m(len(li)):lis=[(list[m],m)]lis.append(m),但不断得到一个错误。我是否正确使用了append?在循环外创建一个单独的数组,然后将元组附加到该数组中。lis是你的元组,m只是一个数字。所以您希望将其设为array.append(lis)。