Skip to main content
 首页 » 编程设计

python之检查python列表中的所有项目是否包含子字符串

2025年05月04日13EasonJim

我有一个 python 列表,我从 api 获得:

ERRATA_PKG_LIST = [] 
packages_key = "packages" 
for pkgs, package_name in errata_rhel_ver_dic.iteritems(): 
    if pkgs == packages_key: 
       ERRATA_PKG_LIST.append(package_name) 
print(ERRATA_PKG_LIST) 

输出:

[u'kernel-2.6.18-416.el5.i686', 
 u'kernel-2.6.18-416.el5.x86_64', 
 u'kernel-debug-2.6.18-416.el5.i686', 
 u'kernel-debug-2.6.18-416.el5.x86_64', 
 u'kernel-debug-devel-2.6.18-416.el5.i686', 
 u'kernel-debug-devel-2.6.18-416.el5.x86_64', 
 u'kernel-devel-2.6.18-416.el5.i686', 
 u'kernel-devel-2.6.18-416.el5.x86_64', 
 u'kernel-doc-2.6.18-416.el5.noarch', 
 u'kernel-headers-2.6.18-416.el5.i386', 
 u'kernel-headers-2.6.18-416.el5.x86_64', 
 u'kernel-PAE-2.6.18-416.el5.i686', 
 u'kernel-PAE-devel-2.6.18-416.el5.i686', 
 u'kernel-xen-2.6.18-416.el5.i686', 
 u'kernel-xen-2.6.18-416.el5.x86_64', 
 u'kernel-xen-devel-2.6.18-416.el5.i686', 
 u'kernel-xen-devel-2.6.18-416.el5.x86_64'] 

我想检查列表中的每一项是否都包含子字符串:el5 如果列表中的所有对象都包含 el5 ,则分配一个变量 rhel = "rhel 5",我该如何实现?

请您参考如下方法:

要测试每个项目是否符合特定条件,请尝试内置函数 all()连同 generator expression .在生成器表达式中,子字符串包含的测试是 in operator .

要过滤列表,只选择符合某些条件的项目,请使用 list comprehension .

要打印列表,str.join()方法通常很有用。

ERRATA_PKG_LIST = [u'kernel-2.6.18-416.el5.i686', u'kernel-2.6.18-416.el5.x86_64', u'kernel-debug-2.6.18-416.el5.i686', u'kernel-debug-2.6.18-416.el5.x86_64', u'kernel-debug-devel-2.6.18-416.el5.i686', u'kernel-debug-devel-2.6.18-416.el5.x86_64', u'kernel-devel-2.6.18-416.el5.i686', u'kernel-devel-2.6.18-416.el5.x86_64', u'kernel-doc-2.6.18-416.el5.noarch', u'kernel-headers-2.6.18-416.el5.i386', u'kernel-headers-2.6.18-416.el5.x86_64', u'kernel-PAE-2.6.18-416.el5.i686', u'kernel-PAE-devel-2.6.18-416.el5.i686', u'kernel-xen-2.6.18-416.el5.i686', u'kernel-xen-2.6.18-416.el5.x86_64', u'kernel-xen-devel-2.6.18-416.el5.i686', u'kernel-xen-devel-2.6.18-416.el5.x86_64'] 
 
 
# To determine if 'el5' appears in every item 
if all('el5' in item for item in ERRATA_PKG_LIST): 
    rhel = "rhel 5" 
 
# To generate the list of items which contain 'el5' 
el5_list = [item for item in ERRATA_PKG_LIST if 'el5' in item] 
 
# To generate the list of items which do NOT contain 'el5' 
not_el5_list = [item for item in ERRATA_PKG_LIST if 'el5' not in item] 
 
# To print a list: 
print('\n'.join(el5_list))