如何在列表中与输入用户一起选择范围

时间:2019-05-25 12:26:45

标签: python list range choice

我想在列表中的元素之间选择一个范围,但是我没有将例如第7项放入内容中,而是放入了元素中。 “文档”和“ 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'
]

3 个答案:

答案 0 :(得分:1)

请参见以下代码: [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)

答案 1 :(得分:1)

您必须将输入转换为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']

答案 2 :(得分:0)

您可以这样做:

$keyword= $_POST['keyword1'];

或者,您也可以使用List Comprehension来做到这一点:

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)

输出:

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 2print。但是,由于“ Python 2.7 will not be maintained past 2020,”,我鼓励您使用raw_input及更高版本。