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