Posts: 1
Threads: 1
Joined: Apr 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.
Posts: 300
Threads: 72
Joined: Apr 2019
maybe using isinstance like:
Num_List = []
for Num in Char_List: if not isinstance(Num, str): Num_List.append(Num)
print(Num_List)
Posts: 1,032
Threads: 16
Joined: Dec 2016
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)
Posts: 2,125
Threads: 11
Joined: May 2017
Apr-27-2023, 12:12 PM
(This post was last modified: Apr-27-2023, 12:12 PM by DeaD_EyE.)
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))
Posts: 6,798
Threads: 20
Joined: Feb 2020
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 5 Your 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)
Posts: 5
Threads: 1
Joined: Apr 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)
Posts: 5
Threads: 1
Joined: Apr 2023
Apr-28-2023, 12:44 AM
(This post was last modified: Apr-28-2023, 12:47 AM by learningPython.)
(Apr-27-2023, 11:32 PM)learningPython Wrote: 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)
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]
Posts: 99
Threads: 1
Joined: Dec 2019
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.
"So, brave knights, if you do doubt your courage or your strength, come no further, for death awaits you all with nasty, big, pointy teeth!" - Tim the Enchanter
Posts: 6,798
Threads: 20
Joined: Feb 2020
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.
|