目的是检查在元组列表中是否可以使用字符串的查找列表
具体地说,检查look-up
列表drop_cols
中是否有这些项
drop_cols=['cond', 'main', 'sub', 'task']
可在元组ndata
列表中找到
ndata=[('main', '', ''),('task', '', ''),('sub', '', ''),
('cond', '', ''),('misc_mycom', 'ch', '300')]
这可以通过以下方式实现:
all_test=[x == dval for dval in nval for x in drop_cols]
然后,测试结果
if sum(all_test)!=0:
print ('item available')
然而,我想知道是否有更有效的方法来做到这一点
为了完整起见,
在if-else
中,有以下过程:
for nval in ndata:
# Check whether any item in the list of `drop_cols` available in the tuple of list of `ndata`
all_test=[x == dval for dval in nval for x in drop_cols]
if sum(all_test)!=0:
b=nval + ('',)
else:
b=nval + (nval[0].split('_')[0] ,)
all_vals.append(b)
或以list comprehension
形式
all_vals= [nval + ('',) if sum ( [x == dval for dval in nval for x in drop_cols] ) != 0
else nval + (nval [0].split ( '_' ) [0],) for nval in ndata]
这是对公认答案的扩展:
将
drop_cols
维护为类型list
比较
set(i) & set(drop_cols)
的设置您可以改为使用
set
差异进行检查:相关问题 更多 >
编程相关推荐