python2.7:在lis中只保留特定列表

2024-09-29 01:35:00 发布

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

我正在使用python 2.7,我有一个包含列表的列表。你知道吗

以下是我的清单:

range_list=[['encoding_txt\\pirkagia_10b_192x144_15_qp_26_ON_encoder_randomaccess_B16_Filters_ON_scalable_JOURNAL2017.txt', 26, 35.1782, 136.8125, 300.788, 0.844, -3.5, '192x144'],
['encoding_txt\\pirkagia_10b_192x144_25_qp_26_ON_encoder_randomaccess_B16_Filters_ON_scalable_JOURNAL2017.txt', 26, 35.1782, 228.0208, 302.251, 0.962, -2.5, '192x144'],
['encoding_txt\\pirkagia_10b_384x288_15_qp_28_ON_encoder_randomaccess_B16_Filters_ON_scalable_JOURNAL2017.txt', 28, 35.2193, 275.4614, 1065.412, 2.167, -2, '384x288'],
['encoding_txt\\pirkagia_10b_384x288_25_qp_28_ON_encoder_randomaccess_B16_Filters_ON_scalable_JOURNAL2017.txt', 28, 35.2193, 459.1024, 1064.403, 2.771, -1, '384x288'],
['encoding_txt\\pirkagia_10b_720x576_15_qp_30_ON_encoder_randomaccess_B16_Filters_ON_scalable_JOURNAL2017.txt', 30, 35.5282, 484.3387, 3536.937, 6.679, 1.5, '720x576'],
['encoding_txt\\pirkagia_10b_720x576_25_qp_30_ON_encoder_randomaccess_B16_Filters_ON_scalable_JOURNAL2017.txt', 30, 35.5282, 807.2312, 3553.744, 6.637, 2.5, '720x576']]

我只想在第一行保留包含字符串_25_的列表。你知道吗

例如,新列表必须是:

range_list1 = [['encoding_txt\\pirkagia_10b_192x144_25_qp_26_ON_encoder_randomaccess_B16_Filters_ON_scalable_JOURNAL2017.txt', 26, 35.1782, 228.0208, 302.251, 0.962, -2.5, '192x144'],
['encoding_txt\\pirkagia_10b_384x288_25_qp_28_ON_encoder_randomaccess_B16_Filters_ON_scalable_JOURNAL2017.txt', 28, 35.2193, 459.1024, 1064.403, 2.771, -1, '384x288'],
['encoding_txt\\pirkagia_10b_720x576_25_qp_30_ON_encoder_randomaccess_B16_Filters_ON_scalable_JOURNAL2017.txt', 30, 35.5282, 807.2312, 3553.744, 6.637, 2.5, '720x576']]

Tags: 字符串txtencoder列表onrangefilterslist
3条回答

使用简单循环:

new_list=[]
for i in range_1:
    if '_25_' in i[0]:
        new_list.append(i)

print(new_list)

列表理解:

print([i for i in range_1 if '_25_' in i[0]])

additional information :

列表理解new_list=[i for i in range_1]与:

new_list=[]
for i in range_1:
    new_list.append(i)

使用生成器表达式:

print(list((i for i in range_1 if '_25_' in i[0])))
newlist = []
#renamed the list to rangeVar
for i in rangeVar:
    if '25' in i[0]:
        newlist.append(i)


print newlist

输出

[['encoding_txt\\pirkagia_10b_192x144_25_qp_26_ON_encoder_randomaccess_B16_Filters_ON_scalable_JOURNAL2017.txt', 26, 35.1782, 228.0208, 302.251, 0.962, -2.5, '192x144'], ['encoding_txt\\pirkagia_10b_384x288_25_qp_28_ON_encoder_randomaccess_B16_Filters_ON_scalable_JOURNAL2017.txt', 28, 35.2193, 459.1024, 1064.403, 2.771, -1, '384x288'], ['encoding_txt\\pirkagia_10b_720x576_25_qp_30_ON_encoder_randomaccess_B16_Filters_ON_scalable_JOURNAL2017.txt', 30, 35.5282, 807.2312, 3553.744, 6.637, 2.5, '720x576']]

您可以使用一个简单的列表:

[s for s in range_list if '_25_' in s[0]]

由于range是一个函数,我还更改了列表的名称。你知道吗

相关问题 更多 >