📜  Python|计算元素直到第一个元组

📅  最后修改于: 2022-05-13 01:54:37.642000             🧑  作者: Mango

Python|计算元素直到第一个元组

有时,在处理记录时,我们可能会遇到一个问题,即记录的一个元素是另一个元组记录,我们可能必须计算记录之前出现的元素计数。这是一个不常见的问题,但有一个解决方案是有用的。让我们讨论可以执行此任务的某些方式。
方法 #1:使用循环 + isinstance() + enumerate()
使用上述功能可以解决此问题。在此,我们只需使用 enumerate() 遍历元素以获取它的索引计数并使用 isinstance() 检查类型。

Python3
# Python3 code to demonstrate working of
# Elements till first tuple
# using isinstance() + enumerate() + loop
 
# initialize tuple
test_tup = (1, 5, 7, (4, 6), 10)
 
# printing original tuple
print("The original tuple : " + str(test_tup))
 
# Elements till first tuple
# using isinstance() + enumerate() + loop
for count, ele in enumerate(test_tup):
    if isinstance(ele, tuple):
        break
 
# printing result
print("Elements till the first tuple : " + str(count))


Python3
# Python3 code to demonstrate working of
# Elements till first tuple
# using takewhile() + sum() + isinstance() + lambda
from itertools import takewhile
 
# initialize tuple
test_tup = (1, 5, 7, (4, 6), 10)
 
# printing original tuple
print("The original tuple : " + str(test_tup))
 
# Elements till first tuple
# using takewhile() + sum() + isinstance() + lambda
res = sum(1 for sub in takewhile(lambda ele: not isinstance(ele, tuple), test_tup))
 
# printing result
print("Elements till the first tuple : " + str(res))


输出 :
The original tuple : (1, 5, 7, (4, 6), 10)
Elements till the first tuple : 3


方法 #2:使用 takewhile() + sum() + isinstance() + lambda
上述功能的组合也可以用来解决这个问题。在此,我们使用 takewhile() 来迭代直到一个元组和 sum() 来检查计数器。

Python3

# Python3 code to demonstrate working of
# Elements till first tuple
# using takewhile() + sum() + isinstance() + lambda
from itertools import takewhile
 
# initialize tuple
test_tup = (1, 5, 7, (4, 6), 10)
 
# printing original tuple
print("The original tuple : " + str(test_tup))
 
# Elements till first tuple
# using takewhile() + sum() + isinstance() + lambda
res = sum(1 for sub in takewhile(lambda ele: not isinstance(ele, tuple), test_tup))
 
# printing result
print("Elements till the first tuple : " + str(res))
输出 :
The original tuple : (1, 5, 7, (4, 6), 10)
Elements till the first tuple : 3