Delete all list entries of length unknown

F

flebber

Hi

Can someone clear up how I can remove all entries of a list when I am
unsure how many entries there will be. I have been using sandbox to
play essentially I am creating two lists a and b I then want to add a
to b and remove all b entries. This will loop and b will receive new
entries add it to a and delete again.

I am going wrong with slice and list deletion, I assign x = len(b) and
then attempting to delete based on this. Here is my sandbox session.
What part am I getting wrong?

#>>>
a = (1, 2, 3, 4)
b = (5, 6, 7, 8)
#>>>
a
#---
(1, 2, 3, 4)
#>>>
b
#---
(5, 6, 7, 8)
#>>>
a + b
#---
(1, 2, 3, 4, 5, 6, 7, 8)
#>>>
b
#---
(5, 6, 7, 8)
#>>>
len(b)
#---
4
#>>>
x = len(b)
#>>>
del b[0:x]
Traceback (most recent call last):
Error: File "<Shell>", line 1, in <module>
Error: TypeError: 'tuple' object does not support item deletion
#>>>
b[0:x] = d
Traceback (most recent call last):
Error: File "<Shell>", line 1, in <module>
Error: NameError: name 'd' is not defined
#>>>
 
C

Chris Rebert

Hi

Can someone clear up how I can remove all entries of a list when I am
unsure how many entries there will be. I have been using sandbox to
play essentially I am creating two lists a and b I then want to add a
to b and remove all b entries. This will loop and b will receive new
entries add it to a and delete again.

I am going wrong with slice and list deletion, I assign x = len(b) and
then attempting to delete based on this. Here is my sandbox session.
What part am I getting wrong?

#>>>
a = (1, 2, 3, 4)
b = (5, 6, 7, 8)
x = len(b)
#>>>
del b[0:x]
Traceback (most recent call last):
Error:   File "<Shell>", line 1, in <module>
Error: TypeError: 'tuple' object does not support item deletion

As the error message says, you're using *tuples*, not lists.
Tuples are immutable (i.e. they cannot be modified after creation) and
are created using parentheses.
Lists on the other hand are made using brackets: [1, 2, 3, 4] # like this

Additionally, the idiomatic way to clear a list (besides the more
obvious approach of just assigning a new, empty list to the variable)
is:
del a[:]

Leaving out the endpoints in the slice causes it to default to the
entire contents of the list.

Cheers,
Chris
 
M

Mark Tolonen

Chris Rebert said:
Tuples are immutable (i.e. they cannot be modified after creation) and
are created using parentheses.

Slight correction: tuples are created using commas. Parentheses are only
needed to disambiguate from other uses of comma:

Python 2.6.2 (r262:71605, Apr 14 2009, 22:40:02) [MSC v.1500 32 bit (Intel)]
on win32
Type "help", "copyright", "credits" or "license" for more information.(1, 2, 3)

-Mark
 
F

flebber

Tuples are immutable (i.e. they cannot be modified after creation) and
are created using parentheses.

Slight correction: tuples are created using commas.  Parentheses are only
needed to disambiguate from other uses of comma:

Python 2.6.2 (r262:71605, Apr 14 2009, 22:40:02) [MSC v.1500 32 bit (Intel)]
on win32
Type "help", "copyright", "credits" or "license" for more information.>>> a=1,
(1, 2, 3)

-Mark

Awesome that has cleared it up for me, plus a bit more thanks.
 
R

r

Chris Rebert said:
Tuples are immutable (i.e. they cannot be modified after creation) and
are createdusingparentheses.

Slight correction: tuples are createdusingcommas.  Parentheses are only
needed to disambiguate from other uses ofcomma:

Python 2.6.2 (r262:71605, Apr 14 2009, 22:40:02) [MSC v.1500 32 bit (Intel)]
on win32
Type "help", "copyright", "credits" or "license" for more information.>>> a=1,
(1, 2, 3)

uhh? what python you using?
<type 'tuple'>

;-)
 

Ask a Question

Want to reply to this thread or ask your own question?

You'll need to choose a username for the site, which only take a couple of moments. After that, you can post your question and our members will help you out.

Ask a Question

Members online

Forum statistics

Threads
473,997
Messages
2,570,241
Members
46,832
Latest member
UtaHetrick

Latest Threads

Top