Python Forum
how to remove brackets within a list
Thread Rating:
  • 1 Vote(s) - 5 Average
  • 1
  • 2
  • 3
  • 4
  • 5
how to remove brackets within a list
#1
Hello,

I would like to know how to get rid of brackets within a list. Ex. ['1', 'r', (2, '5')]. The round brackets inside this list, I would like to get rid of. 

Here is the code in question:

#function for requesting numerical mark --> ask if this function is necessary because computeGrade prompts for both the mark and gives the letter grade.
def getMark():
    mark = int(input("What is your mark? (eg. 50) "))
    return mark


#function for letter grades
def computeGrade():
    #must get the grade from function getMark() or it will keep asking you for inputs each step of the way, when entering getMark in as a function
    gr = getMark()
    if gr < 50:
        g = "F"
        print(g)
    elif gr > 49 and gr < 55:
        g = "D"
        print(g)
    elif gr > 54 and gr < 65:
        g = "C"
        print(g)
    elif gr > 64 and gr < 80:
        g = "B"
        print(g)
    elif gr >= 80:
        g = "A"
        print(g)
    else: #how to make it so if they enter anything other than numerical values it gives you an error message?
        print("Invalid input, please enter your numerical grade such as 40, 80, or 90")
    return(gr, g)
        
#making the list using previous functions        
def student():
    #studlist = [getLastname(), getFirstname(), getMark(), computeGrade()]
    studlist = [getLastname(), getFirstname(), computeGrade()]
    return studlist

print(student())
I would like to eventually get this to print off an index with no brackets what so ever. But I have seen a tutorial on how to do that in the "list basic" thread. Unfortunately, the procedure will print with the round brackets included for the above code.

Look forward to your responses.

Thank you,
A3G
Reply
#2
As your code returns the values like that you cannot, instead of writing more unnecessary code. computeGrade() returns a tuple which is represented with brackets.

def computeGrade():
    .....
    .....
    return [getLastname(), getFirstname(), getMark(), gr, g]
Or return a list instead of tuple.

def computeGrade():
    .....
    .....
    return [gr, g]

studlist = [getLastname(), getFirstname(), computeGrade()].extend(computeGrade())
"As they say in Mexico 'dosvidaniya'. That makes two vidaniyas."
https://freedns.afraid.org
Reply
#3
The bracket means there is a tuple in that position of the list.
From your code it seems that the function computeGrade() returns this tuple, but this function is not shown in your code, neither is getLastname() or getFirstname().

You can use this function from the python documentation in itertools reciepe to flatten the list.
from itertools import chain

my_list = ['1', 'r', (2, '5')]

def flatten(listOfLists):
   "Flatten one level of nesting"
   return chain.from_iterable(listOfLists)

my_flattened_list = list(flatten(my_list))
print(my_flattened_list)
Output:
['1', 'r', 2, '5']
Reply
#4
(Oct-16-2016, 11:05 AM)Yoriz Wrote: From your code it seems that the function computeGrade() returns this tuple, but this function is not shown in your code, neither is getLastname() or getFirstname().
Actually it is ;)

I didn't know about itertools.chain. Thanks!
"As they say in Mexico 'dosvidaniya'. That makes two vidaniyas."
https://freedns.afraid.org
Reply
#5
So it is.

You could also change the function student to
#making the list using previous functions        
def student():
    gr, g = computeGrade()
    studlist = [getLastname(), getFirstname(), gr, g]
    return studlist
Reply
#6
Thank you for the prompt reply.

But when I enter this in:

from itertools import chain
my_list = [student()]
def flatten(listOfLists):
    return chain.from_iterable(listOfLists)
my_flattened_list = list(flatten(my_list))
print(my_flattened_list)
It returns -->['lastname', 'firstname', (mark, 'letter grade)]

sorry did not see your second post Yoriz.

That piece of code is much easier to understand and it works... but it prompts me for my mark before asking for my last name and first name.... how do i make it so the order asks for last name and first name then mark and gives grade?

def student():
    #studlist = [getLastname(), getFirstname(), getMark(), computeGrade()]
    gr, g = computeGrade()
    studlist = [getLastname(), getFirstname(), gr, g]
    return studlist
returns the proper list that i was after! but need the correct order of question.
Reply
#7
Also you can change getting the Mark a bit

while True:
     try:
         mark = int(input("What is your mark? (eg. 50) "))
         break
     except ValueError:
         print("Invalid input. Try again!)
"As they say in Mexico 'dosvidaniya'. That makes two vidaniyas."
https://freedns.afraid.org
Reply
#8
(Oct-16-2016, 11:25 AM)wavic Wrote: Also you can change getting the Mark a bit

while True:
     try:
         mark = int(input("What is your mark? (eg. 50) "))
         break
     except ValueError:
         print("Invalid input. Try again!)

awesome thank you! I guess that is a great way of fixing why the else statement did not work in compute grade section =)
Reply
#9
this will fix the order
def student():
    last_name = getLastname()
    first_name = getFirstname()
    gr, g = computeGrade()
    studlist = [last_name, first_name, gr, g]
    return studlist
Note: Flaten will not be any good if the strings in the list contain more than 1 character as they will also be split into single items in the list.
Reply
#10
(Oct-16-2016, 11:31 AM)Yoriz Wrote: this will fix the order
def student():
    last_name = getLastname()
    first_name = getFirstname()
    gr, g = computeGrade()
    studlist = [last_name, first_name, gr, g]
    return studlist
Note: Flaten will not be any good if the strings in the list contain more than 1 character as they will also be split into single items in the list.

It worked!!! Much appreciated =)
Reply


Possibly Related Threads…
Thread Author Replies Views Last Post
  unable to remove all elements from list based on a condition sg_python 3 443 Jan-27-2024, 04:03 PM
Last Post: deanhystad
  Remove numbers from a list menator01 4 1,336 Nov-13-2022, 01:27 AM
Last Post: menator01
  [SOLVED] [BeautifulSoup] Why does it turn inserted string's brackets into &lt;/&gt;? Winfried 0 1,523 Sep-03-2022, 11:21 PM
Last Post: Winfried
  Reading list items without brackets and quotes jesse68 6 4,636 Jan-14-2022, 07:07 PM
Last Post: jesse68
  Remove empty keys in a python list python_student 7 3,037 Jan-12-2022, 10:23 PM
Last Post: python_student
  Data pulled from SQL comes in brackets nickzsche 3 2,669 Jan-04-2022, 03:39 PM
Last Post: ibreeden
  For Loop and Use of Brackets to Modify Dictionary in Tic-Tac-Toe Game new_coder_231013 7 2,263 Dec-28-2021, 11:32 AM
Last Post: new_coder_231013
  Remove an item from a list contained in another item in python CompleteNewb 19 5,743 Nov-11-2021, 06:43 AM
Last Post: Gribouillis
  Getting a certain value from inside brackets. LeoT 5 3,016 Mar-01-2021, 03:34 PM
Last Post: buran
  .remove() from a list - request for explanation InputOutput007 3 2,241 Jan-28-2021, 04:21 PM
Last Post: InputOutput007

Forum Jump:

User Panel Messages

Announcements
Announcement #1 8/1/2020
Announcement #2 8/2/2020
Announcement #3 8/6/2020