列表中的元组值根据其位置之间的关系

时间:2016-10-08 12:42:13

标签: python list python-3.x tuples

考虑一个包含元组的列表:

scrollEnabled

我如何匹配相应的元组位置。对于tuplelist = [('a','b', 'c', 'd'), (6, 3, 9, 11), (0, 4, 5, 6)] 的前者:

'd'

我尝试了以下内容:

(d, 'has_val', 11)
(d, 'has_val', 6)

但这并没有给我所需的输出

4 个答案:

答案 0 :(得分:3)

听起来像zip是你的朋友:

>>> zip(*tuplelist)
[('a', 6, 0), ('b', 3, 4), ('c', 9, 5), ('d', 11, 6)]

你可以在数学中使用zip有点像矩阵转置。无论如何,根据您的情况,我们可以这样做:

for x in zip(*tuplelist):
    for y in x[1:]:
        print (x[0], 'has_val', y)

给出:

('a', 'has_val', 6)
('a', 'has_val', 0)
('b', 'has_val', 3)
('b', 'has_val', 4)
('c', 'has_val', 9)
('c', 'has_val', 5)
('d', 'has_val', 11)
('d', 'has_val', 6)

你也可以在一个巨大的单行中做到这一点:

>>> [(x[0], 'has_val', y) for x in zip(*tuplelist) for y in x[1:]]
[('a', 'has_val', 6),
 ('a', 'has_val', 0),
 ('b', 'has_val', 3),
 ('b', 'has_val', 4),
 ('c', 'has_val', 9),
 ('c', 'has_val', 5),
 ('d', 'has_val', 11),
 ('d', 'has_val', 6)]

答案 1 :(得分:3)

首先,不要将变量命名为tuplelist = [('a','b', 'c', 'd'), (6, 3, 9, 11), (0, 4, 5, 6)] s = 'has_val' ,因为它会影响内置函数。

index

现在谈到你的问题,将第一行作为标题行是美观的。另请注意,我使用3函数来查找索引,而不是直接硬编码header_row = tuplelist[0] column_name = 'd' column_index = header_row.index(column_name) 。如果列数发生变化,这将非常有用。

for i in tuplelist[1:]:
    print(column_name,s,i[column_index])

现在对于逻辑,使用切片从第二个元素循环。

dotnet/roslyn/Binaries/Debug/csccore

这将为您提供所需的输出。

答案 2 :(得分:2)

zip()可以解决您的问题

$(...)

输出:

tuplelist = [('a','b', 'c', 'd'), (6, 3, 9, 11), (0, 4, 5, 6)]

tuplelist_withposition=zip(tuplelist[0],tuplelist[1],tuplelist[2])

s = 'has_val'
for i in tuplelist_withposition:
     rel = (i[0],s,i[1])
     print rel
     rel=(i[0],s,i[2])
     print rel

答案 3 :(得分:1)

简单地使用元组和列表索引。如果您只想从容器中的一个特定位置获取一个值,请不要使用循环,只需使用索引。

res = (tuplelist[0][3],'has_val', tuplelist[1][3])

完整计划:

tuplelist = [('a', 'b', 'c', 'd'), (6, 3, 9, 11), (0, 4, 5, 6)]
res = (tuplelist[0][3],'has_val', tuplelist[1][3])

print(res)

说明:

  • (tuplelist[0][3]:使用(开始一个元组。从tuplelist中的第一个元组获取该元组中的最后一项,并将其插入到当前元组中。
  • ,'has_val',:将字符串'has_val'添加到我们的元组...
  • tuplelist[1][3]):对于当前元组中的最后一个元素,获取tuplelist中第二个元组中的最后一个元素,并使用)结束我们的元组。