Remove from a slice of a list | Sololearn: Learn to code for FREE!
New course! Every coder should learn Generative AI!
Try a free lesson
+ 2

Remove from a slice of a list

Why doesn't this code change the original list???? a=[2,1,2,4] a[1:].remove(2) print(a)----->a=[2,1,2,4]

12th May 2024, 2:38 AM
Mohammadamin
Mohammadamin - avatar
27 Answers
+ 6
In python, when you slice a list, you create a new list containing the sliced elements, and any modifications made to this new list do not affect the original list.
12th May 2024, 3:23 AM
Gulshan Mahawar
Gulshan Mahawar - avatar
+ 4
Chris Coder , if we use a slice with a list, the result will be a list by default. this means that we do not need to convert the result of a slice explicitely to list. b = list(a[1:]) # >>> should be: b = a[1:]
13th May 2024, 8:53 AM
Lothar
Lothar - avatar
+ 3
Lothar I think OP is wondering why the output wasn't [2, 1, 4], given a[1:] is equal to [1, 2, 4]. From the help(list.remove), it says this function remove the argument from a list, but doesn't mention returning anything. In fact, after calling the remove method, it returns None. b = a[1:].remove(2) print(b) # None So, a[1:].remove(2) alone produce nothing and not changing the original list.
12th May 2024, 4:42 PM
Wong Hei Ming
Wong Hei Ming - avatar
+ 2
Mohammadamin , to remove the number 2 from the list, we do not need a slice. it can be done (inplace, without creating a new list) like: a.remove(2) this will remove the leftmost 2. if we wanted to remove all numbers 2, there are several possible solutions.
12th May 2024, 3:22 PM
Lothar
Lothar - avatar
+ 2
Lothar You are right. It does not have to be explicitly done. However, My intention was to clarify that you can't simply modify the slice directly. Since the question is essentially “how to remove from a slice of a list” Since slicing creates a new substring from the source string and the original string remains unchanged, I used “list” as a clear illustration that I'm referring to a new, separate list.
13th May 2024, 6:45 PM
Chris Coder
Chris Coder - avatar
+ 2
sarah shalom, Mohammadamin Okay, that's fine. The original topic will get lost among all the new, unrelated stuff. And that'll make the whole post a confusing mess that's not helpful to anyone.
13th May 2024, 8:02 PM
Chris Coder
Chris Coder - avatar
+ 1
a[1:] creates a slice of the original list object a. a[1:] Slice does not have a remove() method. To print the slice  print(a[1:]) If you want to remove an element from a slice of a list, you can convert the slice to a list and then call the remove() method: b =list( a[1:]) Then you may call the remove() method on list b b.remove(2) print(b)  Example: a=[2,1,2,4] a[1:] print(a)         # [2, 1, 2, 4] print(a[1:])    # [1, 2, 4] b = list(a[1:]) b.remove(2) print(b)        #[1, 4]
12th May 2024, 9:16 PM
Chris Coder
Chris Coder - avatar
+ 1
sarah shalom create a new post so that you will recieve the attention you need for your question.
13th May 2024, 7:34 PM
Chris Coder
Chris Coder - avatar
+ 1
/* (: teegame :) basically its a bet game where user has to input 1 for playGame 0 for exit game ---- Input method----- 1 10 20 30 40 50 1 -----input done----- Brief explanation :) 1 as a first input starts the game then on a separate line you have to enter 5 unique numbers (numbers should not be same ) then you have to give bet number that will be challenge for the computerNumbers to match that specific bet or not like in the above input i bet computer 1 number then output will be predicted according to situation */ import java.util.*; public class teegame { // Constants declared for the game parameters private static int NUMBERS_TO_PICK = 5; // Number of numbers to pick private static int MAX_NUMBER = 50; // Terminal value of specified range private static int MAX_BET = 5; // Maximum bet private static Scanner scanner = new Scanner(System.in); private static ArrayList<Integer> playerNumbers = new ArrayList<>(); priva
13th May 2024, 7:41 PM
sarah shalom
sarah shalom - avatar
+ 1
List slicing returns a new list from the existing list. Thus the original list will remain unchanged.
13th May 2024, 10:15 PM
JaScript
JaScript - avatar
+ 1
a[1:].remove(2) means you are removing 2 from the list a[1:]......not a. a is still same
21st May 2024, 6:13 PM
Santanu
0
Hello
13th May 2024, 7:31 PM
sarah shalom
sarah shalom - avatar
0
I need help on how to form a game
13th May 2024, 7:32 PM
sarah shalom
sarah shalom - avatar
0
Chris Coder It doesn't need to create a new post. It's ok.
13th May 2024, 7:39 PM
Mohammadamin
Mohammadamin - avatar
0
Thanks when would you please send it
13th May 2024, 7:40 PM
sarah shalom
sarah shalom - avatar
0
Says who?
13th May 2024, 8:04 PM
sarah shalom
sarah shalom - avatar
0
All I need is a formular for making games on java
13th May 2024, 8:05 PM
sarah shalom
sarah shalom - avatar
0
/* (: teegame :) basically its a bet game where user has to input 1 for playGame 0 for exit game ---- Input method----- 1 10 20 30 40 50 1 -----input done----- Brief explanation :) 1 as a first input starts the game then on a separate line you have to enter 5 unique numbers (numbers should not be same ) then you have to give bet number that will be challenge for the computerNumbers to match that specific bet or not like in the above input i bet computer 1 number then output will be predicted according to situation */ import java.util.*; public class teegame { // Constants declared for the game parameters private static int NUMBERS_TO_PICK = 5; // Number of numbers to pick private static int MAX_NUMBER = 50; // Terminal value of specified range private static int MAX_BET = 5; // Maximum bet private static Scanner scanner = new Scanner(System.in); private static ArrayList<Integer> playerNumbers = new ArrayList<>(); priva
13th May 2024, 8:06 PM
sarah shalom
sarah shalom - avatar
0
It might be very helpful
13th May 2024, 8:06 PM
sarah shalom
sarah shalom - avatar