What does [:] mean?
I'm analyzing some Python code and I don't know what
pop = population[:]
means. Is it something like array开发者_如何学Python lists in Java or like a bi-dimensional array?
It is an example of slice notation, and what it does depends on the type of population
. If population
is a list, this line will create a shallow copy of the list. For an object of type tuple
or a str
, it will do nothing (the line will do the same without [:]
), and for a (say) NumPy array, it will create a new view to the same data.
It might also help to know that a list slice in general makes a copy of part of the list. E.g. population[2:4]
will return a list containing population[2] and population[3] (slicing is right-exclusive). Leaving away the left and right index, as in population[:]
they default to 0 and length(population) respectively, thereby selecting the entire list. Hence this is a common idiom to make a copy of a list.
well... this really depends on the context. Ultimately, it passes a slice
object (slice(None,None,None)
) to one of the following methods: __getitem__
, __setitem__
or __delitem__
. (Actually, if the object has a __getslice__
, that will be used instead of __getitem__
, but that is now deprecated and shouldn't be used).
Objects can do what they want with the slice.
In the context of:
x = obj[:]
This will call obj.__getitem__
with the slice object passed in. In fact, this is completely equivalent to:
x = obj[slice(None,None,None)]
(although the former is probably more efficient because it doesn't have to look up the slice
constructor -- It's all done in bytecode).
For most objects, this is a way to create a shallow copy of a portion of the sequence.
Next:
x[:] = obj
Is a way to set the items (it calls __setitem__
) based on obj
.
and, I think you can probably guess what:
del x[:]
calls ;-).
You can also pass different slices:
x[1:4]
constructs slice(1,4,None)
x[::-1]
constructs slice(None,None,-1)
and so forth. Further reading: Explain Python's slice notation
It is a slice from the beginning of the sequence to the end, usually producing a shallow copy.
(Well, it's more than that, but you don't need to care yet.)
It creates a copy of the list, versus just assigning a new name for the already existing list.
[:]
used for limiter or slicing in array , hash
eg:
[1:5] for displaying values between 1 inclusive and 5 exclusive i.e 1-4
[start:end]
basically used in array for slicing , understand bracket accept variable that mean value or key to display, and " : " is used to limit or slice the entire array into packets .
精彩评论