我想在列表中的元素之间选择一个范围,但是我没有将例如第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'
]
答案 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 2
和print
。但是,由于“ Python 2.7 will not be maintained past 2020,”,我鼓励您使用raw_input
及更高版本。