开发者

What does [:] mean?

开发者 https://www.devze.com 2023-03-08 21:10 出处:网络
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 sli

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 .

0

精彩评论

暂无评论...
验证码 换一张
取 消