1
votes

Comment sélectionner la plage avec l'utilisateur d'entrée dans la liste

Je veux sélectionner une plage entre les éléments d'une liste, mais au lieu de mettre, par exemple, l'élément 7, je mets ce que je vois dans les éléments. Le nombre entre "document" et "35621" change, j'ai besoin de convertir ces nombres en une plage (je pense?)

Je ne sais pas vraiment comment faire cela.

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


0 commentaires

3 Réponses :


0
votes

Vous pouvez le faire comme ceci:

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

Ou bien, vous pouvez utiliser List Comprehension et faites-le comme ceci:

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

Sortie:

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)

Je peux voir que vous utilisez Python 2 , donc la seule différence que je pense est avec les print et raw_input . Cependant, puisque " Python 2.7 ne sera pas maintenu après 2020, " je vous encourage à utiliser Python 3 et supérieur.


1 commentaires

Merci pour votre réponse, je ferai plus de recherche sur la liste, oui je connais python 2x, je passerai bientôt sur python3. :)



1
votes

veuillez voir le code ci-dessous: [n pour n dans ma_liste si int (plages [0])

Ceci est le code complet.

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)


0 commentaires

1
votes

Vous devez convertir l'entrée en int:

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

la sortie sera:

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])]


0 commentaires