python - 使用 Python 检查元组列表中的字符串列表是否可用
问题描述
目的是检查元组列表中的字符串查找列表是否可用。
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]
解决方案
您可以set
改为检查差异:
drop_cols={'cond', 'main', 'sub', 'task'}
print ([i+("",) if set(i)&drop_cols else i+(i[0].split("_")[0],) for i in ndata])
[('main', '', '', ''), ('task', '', '', ''), ('sub', '', '', ''),
('cond', '', '', ''), ('misc_mycom', 'ch', '300', 'misc')]
推荐阅读
- python - 如何使用 python 套接字连接两台计算机?
- azure - extract a list of all Azure Active Directory users through Powershell within Azure Function App save as csv and then send to ftp site
- react-native - How to increase the clickable area of a nested clickable Text
- angular - 在生成动态表单字段时删除行,始终删除最后一个索引
- python - Why does Python throw IndexError for array insertion problem?
- flutter - Statefull widget not changing data, how to fix that?
- python - Python - web crawling / different result from same code? / requests, bs4 / M1
- php - PHP 邮件功能 - 添加外部图像
- python - Using startswith in lambda expression and filter function with Python
- css - Parent `grid` doesn't take child's `min-content` width into account