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

2024-04-29 06:23:43 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一个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)

输出:

^{pr2}$

我要检查列表中的每一项是否都包含子字符串:el5 如果列表中的所有对象都包含el5,则分配一个变量 rhel=“rhel 5”,我如何做到这一点?在


Tags: keynameinapipackage列表forpackages
3条回答
if all(['el5' in item for item in ERRATA_PKG_LIST]):
    rhel = "rhel 5"
if all(map(lambda pkg: "el5" in pkg, ERRATA_PKG_LIST)):
        rhel = "rhel 5"

若要测试每个项是否符合某个条件,请尝试内置函数^{}generator expression。在生成器表达式中,子字符串包含的测试是^{} operator。在

要筛选列表,只选择符合某些条件的项,请使用list comprehension。在

要打印列表,^{}方法通常很有用。在

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))

相关问题 更多 >