Skip to content Skip to sidebar Skip to footer

Python: Single Colon Vs Double Colon

What is the difference between single and double colon in this situation? data[0:,4] vs data[0::,4] women_only_stats = data[0::,4] == 'female' men_only_stats = data[0::,4] != 'f

Solution 1:

No, there is no difference.

See the Python documentation for slice:

From the docs: a[start:stop:step]

The start and step arguments default to None. Slice objects have read-only data attributes start, stop and step which merely return the argument values (or their default).

In this case, you are including an empty step parameter.

>>>a = [1,2,3,4]>>>a[2:]
[3,4]
>>>a[2::]
[3,4]
>>>a[2:] == a[2::]
True

And to understand what the step parameter actually does:

>>>b = [1,2,3,4,5,6,7,8,9,10]>>>b[0::5]
[1, 6]
>>>b[1::5]
[2, 7]

So by leaving it to be implicitly None (i.e., by either a[2:] or a[2::]), you are not going to change the output of your code in any way.

Hope this helps.

Solution 2:

Both syntaxes result in the same indexes.

class Foo(object):
  def __getitem__(self, idx):
    print(idx)

Foo()[1::,6]
# prints (slice(1, None, None), 6)
Foo()[1:,6]
# prints (slice(1, None, None), 6)

Basically, 1::,6 is a tuple of a slice (1::) and a number (6). The slice is of the form start:stop[:stride]. Leaving the stride blank (1::) or not stating it (1:) is equivalent.

Solution 3:

Solution 4:

It's like this: s[start:end:step]. Slice s from start to end with step step.

Solution 5:

In your case data is

data = ['1''0''3''Braund, Mr. Owen Harris''male''22''1''0''A/5 21171''7.25''''S']

So it is equal to

data = ['103Br.............7.25S']

In this sitation there is only single item in list so data[0::4] or data[0:4] doesn't impact any thing.

If you try this it will clear your question/answer

print data[0][0::4]
print data[0][0:4]

It works like

data[start:end:step]

So it behaves as usual if your step size is less then data length.

Post a Comment for "Python: Single Colon Vs Double Colon"