Python – 为元组记录添加前缀
有时,在使用Python列表时,我们可能会遇到需要查找以特定元组记录开头的所有元组的问题。这类问题可以在数据领域找到应用。让我们讨论可以执行此任务的某些方式。
方法 #1:使用列表理解 + zip() + all()
上述功能的组合可以用来解决这个问题。在此,我们使用 all() 执行检查任务,该任务检查所有前缀元素是否与使用 zip() 使用前缀压缩的元素相等。列表推导用于执行所有元素。
Python3
# Python3 code to demonstrate working of
# Prefix tuple records
# Using list comprehension + zip() + all()
# initializing list
test_list = [('Gfg', 'best', 'geeks'), ('Gfg', 'good'),
('Gfg', 'best', 'CS'), ('Gfg', 'love')]
# printing original list
print("The original list is : " + str(test_list))
# initializing prefix tuple
pref_tup = ('Gfg', 'best')
# Prefix tuple records
# Using list comprehension + zip() + all()
res = [tup for tup in test_list if all(x == y for x, y in
zip(tup, pref_tup))]
# printing result
print("The filtered tuples : " + str(res))
Python3
# Python3 code to demonstrate working of
# Prefix tuple records
# Using filter() + lambda + generator expression + all()
# initializing list
test_list = [('Gfg', 'best', 'geeks'), ('Gfg', 'good'),
('Gfg', 'best', 'CS'), ('Gfg', 'love')]
# printing original list
print("The original list is : " + str(test_list))
# initializing prefix tuple
pref_tup = ('Gfg', 'best')
# Prefix tuple records
# Using filter() + lambda + generator expression + all()
res = list(filter(lambda sub: all([sub[idx] == ele
for idx, ele in enumerate(pref_tup)]), test_list))
# printing result
print("The filtered tuples : " + str(res))
输出 :
原来的列表是:[('Gfg', 'best', 'geeks'), ('Gfg', 'good'), ('Gfg', 'best', 'CS'), ('Gfg', '爱')]
过滤后的元组:[('Gfg', 'best', 'geeks'), ('Gfg', 'best', 'CS')]
方法 #2:使用 filter() + lambda + 生成器表达式 + all()
上述功能的组合可用于解决此特定问题。在此,我们使用 filter() 执行过滤任务并使用 lambda 函数执行逻辑编译。
Python3
# Python3 code to demonstrate working of
# Prefix tuple records
# Using filter() + lambda + generator expression + all()
# initializing list
test_list = [('Gfg', 'best', 'geeks'), ('Gfg', 'good'),
('Gfg', 'best', 'CS'), ('Gfg', 'love')]
# printing original list
print("The original list is : " + str(test_list))
# initializing prefix tuple
pref_tup = ('Gfg', 'best')
# Prefix tuple records
# Using filter() + lambda + generator expression + all()
res = list(filter(lambda sub: all([sub[idx] == ele
for idx, ele in enumerate(pref_tup)]), test_list))
# printing result
print("The filtered tuples : " + str(res))
输出 :
原来的列表是:[('Gfg', 'best', 'geeks'), ('Gfg', 'good'), ('Gfg', 'best', 'CS'), ('Gfg', '爱')]
过滤后的元组:[('Gfg', 'best', 'geeks'), ('Gfg', 'best', 'CS')]