使用 for 循环创建元组列表
creating a list of tuples using for loop
我想从一个列表和每个元素在列表中的位置创建一个元组列表。这就是我正在尝试的。
def func_ (lis):
ind=0
list=[]
for h in lis:
print h
return h
假设函数的参数:
lis=[1,2,3,4,5]
我想知道如何使用 if ind.
期望的输出:
[(1,0),(2,1),(3,2),(4,3),(5,4)]
您可以使用 enumerate
and a list comprehension 更轻松地做到这一点:
>>> lis=[1,2,3,4,5]
>>> [(x, i) for i, x in enumerate(lis)]
[(1, 0), (2, 1), (3, 2), (4, 3), (5, 4)]
>>>
您也可以考虑使用 xrange
、len
和 zip
,正如@PadraicCunningham 所建议的:
>>> lis=[1,2,3,4,5]
>>> zip(lis, xrange(len(lis))) # Call list() on this in Python 3
[(1, 0), (2, 1), (3, 2), (4, 3), (5, 4)]
>>>
可以找到所有这些函数的文档 here。
如果您必须定义自己的函数,那么您可以这样做:
def func_(lis):
ind = 0
lst = [] # Don't use 'list' as a name; it overshadows the built-in
for h in lis:
lst.append((h, ind))
ind += 1 # Increment the index counter
return lst
演示:
>>> def func_(lis):
... ind = 0
... lst = []
... for h in lis:
... lst.append((h, ind))
... ind += 1
... return lst
...
>>> lis=[1,2,3,4,5]
>>> func_(lis)
[(1, 0), (2, 1), (3, 2), (4, 3), (5, 4)]
>>>
我想从一个列表和每个元素在列表中的位置创建一个元组列表。这就是我正在尝试的。
def func_ (lis):
ind=0
list=[]
for h in lis:
print h
return h
假设函数的参数:
lis=[1,2,3,4,5]
我想知道如何使用 if ind.
期望的输出:
[(1,0),(2,1),(3,2),(4,3),(5,4)]
您可以使用 enumerate
and a list comprehension 更轻松地做到这一点:
>>> lis=[1,2,3,4,5]
>>> [(x, i) for i, x in enumerate(lis)]
[(1, 0), (2, 1), (3, 2), (4, 3), (5, 4)]
>>>
您也可以考虑使用 xrange
、len
和 zip
,正如@PadraicCunningham 所建议的:
>>> lis=[1,2,3,4,5]
>>> zip(lis, xrange(len(lis))) # Call list() on this in Python 3
[(1, 0), (2, 1), (3, 2), (4, 3), (5, 4)]
>>>
可以找到所有这些函数的文档 here。
如果您必须定义自己的函数,那么您可以这样做:
def func_(lis):
ind = 0
lst = [] # Don't use 'list' as a name; it overshadows the built-in
for h in lis:
lst.append((h, ind))
ind += 1 # Increment the index counter
return lst
演示:
>>> def func_(lis):
... ind = 0
... lst = []
... for h in lis:
... lst.append((h, ind))
... ind += 1
... return lst
...
>>> lis=[1,2,3,4,5]
>>> func_(lis)
[(1, 0), (2, 1), (3, 2), (4, 3), (5, 4)]
>>>