I want to select a range between elements in a list, but instead of putting, for example, item 7, I put what I’m seeing in elements. The number between ‘document’ and ‘35621’ changes, I need to convert these numbers to a range (I think?)
I don’t really know how to make this.
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]
For example, in my list I have:
[
'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'
]
I enter in choice input : 456-460
The result would be:
[
'document-456-35621',
'document-457-35621',
'document-458-35621',
'document-459-35621',
'document-460-35621'
]
Advertisement
Answer
You can do it like this:
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)
Or alternatively, you can use List Comprehension and do it like this:
new_list = [item for item in my_list if lower_bound <= int(item.split('-')[1]) <= upper_bound]
print(new_list)
Output:
[
'document-456-35621',
'document-457-35621',
'document-458-35621',
'document-459-35621',
'document-460-35621'
]
I can see that you’re using Python 2, so the only difference I think is with the print and raw_input. However, since “Python 2.7 will not be maintained past 2020,” I would encourage you to use Python 3 and above.