Delete strings from a list to create a new only number list - Printable Version +- Python Forum (https://python-forum.io) +-- Forum: Python Coding (https://python-forum.io/forum-7.html) +--- Forum: General Coding Help (https://python-forum.io/forum-8.html) +--- Thread: Delete strings from a list to create a new only number list (/thread-39876.html) |
Delete strings from a list to create a new only number list - Dvdscot - Apr-27-2023 Hello, I am doing a Python training course and am stuck at this question: Got a list: Char_List = ['Bla', 'Blu', 10, 20, 30, 40] Want to have this result: Num_List = [10, 20, 30, 40] Used this code: Num_List = [] for entry in range(len(Char_List)): if type(entry) != str: Num_List.append(entry) print(Num_List)But I get [0, 1, 2, 3, 4, 5], the indexes of the complete Char_List is shown instead of the numeric content. Thanks. RE: Delete strings from a list to create a new only number list - paul18fr - Apr-27-2023 maybe using isinstance like:Num_List = [] for Num in Char_List: if not isinstance(Num, str): Num_List.append(Num) print(Num_List) RE: Delete strings from a list to create a new only number list - Axel_Erfurt - Apr-27-2023 use for entry in Char_List Char_List = ['Bla', 'Blu', 10, 20, 30, 40] Num_List = [] for entry in Char_List: if type(entry) != str: Num_List.append(entry) print(Num_List)or for using len Char_List = ['Bla', 'Blu', 10, 20, 30, 40] Num_List = [] for x in range(len(Char_List)): if type(Char_List[x]) != str: Num_List.append(Char_List[x]) print(Num_List) RE: Delete strings from a list to create a new only number list - DeaD_EyE - Apr-27-2023 Same as a list-comprehension: mixed_types = ['Bla', 'Blu', 10, 20, 30, 40] numbers = [element for element in mixed_types if isinstance(element, int)]Or with filter :def isint(x): return isinstance(x, int) mixed_types = ['Bla', 'Blu', 10, 20, 30, 40] numbers = list(filter(isint, mixed_types)) RE: Delete strings from a list to create a new only number list - deanhystad - Apr-27-2023 Quote:But I get [0, 1, 2, 3, 4, 5], the indexes of the complete Char_List is shown instead of the numeric content. Thanks.The problem is you never referenced the items in the list. This gives you sequence of numbers whose only relation to the list is the count is the same. for entry in range(len(Char_List)): # entry is not an item from the list. It is a number 0 to 5Your code would work fine if you checked the actual list values. Char_List = ['Bla', 'Blu', 10, 20, 30, 40] Num_List = [] for entry in Char_List: #<- Loop through the list values if type(entry) != str: Num_List.append(entry) print(Num_List) RE: Delete strings from a list to create a new only number list - learningPython - Apr-27-2023 use below code: import numpy as np Char_List = ['Bla', 'Blu', 10, 20, 30, 40] Num_List = np.arange(10,len(Char_List)*10,10) print(Num_List) RE: Delete strings from a list to create a new only number list - learningPython - Apr-28-2023 (Apr-27-2023, 11:32 PM)learningPython Wrote: use below code: I misunderstood your question earlier. Here is the right code: If you want to use numpy library: import numpy as np Char_List = ['Bla', 'Blu', 10, 20, 30, 40] arr = np.array(Char_List) #### converting into numpy array Num_List = np.array(arr[np.char.isdigit(arr)],dtype = 'int') ## np.char.isdigit(arr) gives boolean output True if array valye is digit else False. Then creating array out of it with datatype "int" print(Num_List)Ouput: [10 20 30 40] RE: Delete strings from a list to create a new only number list - Marbelous - May-01-2023 If this is a training course question, maybe you should just do what the question actually asks? Enumerate through your list. Check if current iteration is a string and if so, delete it. Return (or print) the list that's now devoid of strings. This should be simple and only require basic Python. You don't need type-checking tools, list comprehensions or Numpy(!? ?!) Once you can do that, preferably on you own, take a look at some of the other answers posted for alternative methods. RE: Delete strings from a list to create a new only number list - deanhystad - May-01-2023 Quote:If this is a training course question, maybe you should just do what the question actually asks?You are assuming the instructions say delete the string values from the list. That is in the thread topic, but the OP says this: Got a list: Char_List = ['Bla', 'Blu', 10, 20, 30, 40] Want to have this result: Num_List = [10, 20, 30, 40]One implies changing the list object, the other implies making a new list (otherwise why the new variable name?). Changing the existing list is a more interesting challenge. |