如何 select 范围与列表中的输入用户

How to select range with input user in list

我想 select 列表中元素之间的范围,但是我没有放置第 7 项,而是将我看到的内容放在元素中。 'document' 和 '35621' 之间的数字发生变化,我需要将这些数字转换为一个范围(我想?)

我真的不知道怎么做。

data_input = raw_input("\nEnter range: \n")

my_list = ['document-452-35621', 'document-453-35621', 'document-454-35621', 'document-455-35621', 'document-456-35621', 'document-457-35621', 'document-458-35621', 'document-459-35621', 'document-460-35621']

print my_list[5:9] 

例如,在我的列表中我有:

[
    'document-452-35621', 
    'document-453-35621', 
    'document-454-35621', 
    'document-455-35621', 
    'document-456-35621', 
    'document-457-35621', 
    'document-458-35621', 
    'document-459-35621', 
    'document-460-35621'
]

我在选择输入中输入:456-460

结果将是:

[
    'document-456-35621',
    'document-457-35621',
    'document-458-35621',
    'document-459-35621',
    'document-460-35621'
]

你可以这样做:

my_list = [
    'document-452-35621',
    'document-453-35621',
    'document-454-35621',
    'document-455-35621',
    'document-456-35621',
    'document-457-35621',
    'document-458-35621',
    'document-459-35621',
    'document-460-35621'
]

data_input = input("\nEnter range: \n").split('-') # ['456', '460']
lower_bound = int(data_input[0]) # 456
upper_bound = int(data_input[1]) # 460

new_list = []
for item in my_list:
    if lower_bound <= int(item.split('-')[1]) <= upper_bound:
        new_list.append(item)

print(new_list)

或者,您可以使用 List Comprehension 并按如下方式进行:

new_list = [item for item in my_list if lower_bound <= int(item.split('-')[1]) <= upper_bound]
print(new_list)

输出:

[
    'document-456-35621',
    'document-457-35621',
    'document-458-35621',
    'document-459-35621',
    'document-460-35621'
]

我看到您使用的是 Python 2,所以我认为唯一的区别是 printraw_input。但是,由于“Python 2.7 will not be maintained past 2020,”,我鼓励您使用 Python 3 及更高版本。

请看代码如下: [n for n in my_list if int(ranges[0]) <= int(n.split('-')[1]) <= int(ranges[1])]

这是完整代码。

data_input = input("\nEnter range: \n")

my_list = ['document-452-35621', 'document-453-35621', 'document-454-35621', 'document-455-35621', 'document-456-35621', 'document-457-35621', 'document-458-35621', 'document-459-35621', 'document-460-35621']

ranges = data_input.split('-')
result = [n for n in my_list if int(ranges[0]) <= int(n.split('-')[1]) <= int(ranges[1])]
print (result)

您必须将输入转换为 int:

my_list = [
'document-452-35621',
'document-453-35621',
'document-454-35621',
'document-455-35621',
'document-456-35621',
'document-457-35621',
'document-458-35621',
'document-459-35621',
'document-460-35621'
]

data_input = input("\nEnter range: \n").split('-')

print([x for x in my_list if int(data_input[0])<=int(x.split('-')[1]))<=int(data_input[1])]

输出将是:

['document-456-35621',
'document-457-35621', 
'document-458-35621', 
'document-459-35621', 
'document-460-35621']