Python Forum
Thread Rating:
  • 0 Vote(s) - 0 Average
  • 1
  • 2
  • 3
  • 4
  • 5
Removing element from list
#1
Hello guys,

I'm new on the forum. The reason I'm here is that I do not know how to fix my problem and hopefully you can help me.
I want to delete the maximum element from the list with the command "remove". I know that remove, removes the first element that I choose to remove, so I made a loop so if there are two or more maximum elements, all of them should be removed.
It doesn't work. It seems like the loop doesn't go through all elements.

def list(a):
    c=max(a)
    a.remove(c)

    for i in a:
        print(i)
        if i == c:
            a.remove(i)


    if a[len(a)-1] == c:
        a.pop(len(a)-1)

    return a



print(list([1,2,3,4,5,6,6,6,6,6,6,6,6,6]))
Superjoe likes this post
Reply
#2
list is already an object in python. It is recommended you use another name for your function.

It is a bad idea to remove objects from an object while you're iterating over it. It will mess with the iteration. You're doing this in lines 5-8.

An alternative is to make a copy without the objects you want removed, or to remove them outside of an iteration.

Remove by copy elements that don't match
a = [item for item in a if item != c]
Remove without iteration
while c in a:
    a.remove(c)
Remove while iterating over a copy
for i in list(a):
    if i == c:
        a.remove(i)
squall likes this post
Reply
#3
You can approach this from another angle: 'remove first occurence of maximum value n-times', where n is number of occurences of maximum value. It's simple but not efficient:

>>> list_ = [1,2,3,4,5,6,6,6,6,6,6,6,6,6]
>>> max_value = max(list_)                 # find maximum value
>>> repetitions = list_.count(max_value)   # find how many times maximum value occurs
>>> for repetition in range(repetitions):  # remove all maximum values
...     list_.remove(max_value)
...
>>> list_
[1, 2, 3, 4, 5]
squall and tester_V like this post
I'm not 'in'-sane. Indeed, I am so far 'out' of sane that you appear a tiny blip on the distant coast of sanity. Bucky Katt, Get Fuzzy

Da Bishop: There's a dead bishop on the landing. I don't know who keeps bringing them in here. ....but society is to blame.
Reply
#4
Thank you guys. I have used option with while - it spoke to me the most.

Anyway I have a question about that:
for i in list(a):
    if i == c:
        a.remove(i)
What does that list(a) there mean? It doesn't work for me.
Reply
#5
You want to use remove(), which has the problem of removing the first instance. The following removes that largest element until there are no longer any matching elements
a = [4,6,8,10,4,7,10,9]
c = max(a)
try :
    while True:
        a.remove(c)
except ValueError:
    pass
print(a)
Output:
[4, 6, 8, 4, 7, 9]
Reply
#6
(Nov-22-2020, 10:16 AM)squall Wrote: Anyway I have a question about that:
for i in list(a):
    if i == c:
        a.remove(i)
What does that list(a) there mean? It doesn't work for me.

It creates a new (different) list from some other object.
l = [1, 2, 3] # a list
a = l         # a is the *same* list
b = list(l)   # b is a *different* list
l.remove(1)   # removes the "1" from l (and from a since it's the same list)

print(l)
print(a)
print(b)
Output:
[2, 3] [2, 3] [1, 2, 3]
It probably doesn't work for you because you've named your function "list", so you've overriden the internal python "list" function.
Reply
#7
Another way to write line 3 above that may be a little more clear is
b=l.copy()
Reply


Possibly Related Threads…
Thread Author Replies Views Last Post
  list in dicitonary element problem jacksfrustration 3 625 Oct-14-2023, 03:37 PM
Last Post: deanhystad
  Find (each) element from a list in a file tester_V 3 1,156 Nov-15-2022, 08:40 PM
Last Post: tester_V
  Сheck if an element from a list is in another list that contains a namedtuple elnk 8 1,717 Oct-26-2022, 04:03 PM
Last Post: deanhystad
  Membership test for an element in a list that is a dict value for a particular key? Mark17 2 1,162 Jul-01-2022, 10:52 PM
Last Post: Pedroski55
  How to find the second lowest element in the list? Anonymous 3 1,905 May-31-2022, 01:58 PM
Last Post: Larz60+
  check if element is in a list in a dictionary value ambrozote 4 1,879 May-11-2022, 06:05 PM
Last Post: deanhystad
  sorting a list of lists by an element leapcfm 3 1,805 Sep-10-2021, 03:33 PM
Last Post: leapcfm
  Convert each element of a list to a string for processing tester_V 6 5,170 Jun-16-2021, 02:11 AM
Last Post: tester_V
  Sume Every 10 element in the list and Divided of Sum quest_ 7 2,969 Nov-27-2020, 10:58 AM
Last Post: perfringo
  Counting Element in Multidimensional List quest_ 1 2,068 Nov-25-2020, 10:00 PM
Last Post: quest_

Forum Jump:

User Panel Messages

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