如何 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
,所以我认为唯一的区别是 print
和 raw_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']
我想 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
,所以我认为唯一的区别是 print
和 raw_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']