Python 中的元组列表

List of tuples in Python

我有一个元组列表

lista = [('ab','tall',3),
('go','cd',2),
('gb','my',1),
('game','me', 2),
('uk','try',4),
('me','hello',1),
('good','try',3)]

我需要提取元组的第 3 个值小于 3 的所有元素,然后检查它们是否彼此相邻。

需要输出

('go','cd',2)('gb','my',1)('game','me', 2)('me','hello',1) 然后检查哪些是相邻的,在本例中是 ('go','cd',2)('gb','my',1)('game','me', 2) 是相邻的。

第一部分:

提取元组第 3 个值小于 3 的所有元素。

通过列表理解。

代码:

>>> lista = [('ab','tall',3),
... ('go','cd',2),
... ('gb','my',1),
... ('game','me', 2),
... ('uk','try',4),
... ('me','hello',1),
... ('good','try',3)]
>>> [i for i in lista if i[2] < 3]
[('go', 'cd', 2), ('gb', 'my', 1), ('game', 'me', 2), ('me', 'hello', 1)]
>>> 

我不是 100% 确定你所说的 "next to each other" 是什么意思,但我试着猜测了一下。有必要添加条件检查特殊情况,如 len(lista) < 2

此外 is_valid 列表不是必需的,您可以将条件移动到循环中,但我发现这更容易理解。

lista = [('ab','tall',3),
('go','cd',2),
('gb','my',1),
('game','me', 2),
('uk','try',4),
('me','hello',1),
('good','try',3)]

# items that fullfill the condition
is_valid = [1 if item[2] < 3 else 0 for item in lista]

# handling "next to each other condition" of the first item
valid_items = []
if is_valid[0] == 1 and is_valid[1]:
    valid_items.append(lista[0]) 

# handling "next to each other condition" of items that are not the first and not the last      
for item_id in range(1, len(is_valid)-1):
    if is_valid[item_id] == 1 and (is_valid[item_id - 1] == 1 or is_valid[item_id + 1] == 1):
        valid_items.append(lista[item_id])
# handling "next to each other condition" of the last item in the list
if is_valid[-2] == 1 and is_valid[-1] == 1:
    valid_items.append(lista[-1])

# just print the result
print valid_items