考虑一个包含元组的列表:
scrollEnabled
我如何匹配相应的元组位置。对于tuplelist = [('a','b', 'c', 'd'), (6, 3, 9, 11), (0, 4, 5, 6)]
的前者:
'd'
我尝试了以下内容:
(d, 'has_val', 11)
(d, 'has_val', 6)
但这并没有给我所需的输出
答案 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
中第二个元组中的最后一个元素,并使用)
结束我们的元组。