|
1 :mod:`operator` --- Standard operators as functions |
|
2 =================================================== |
|
3 |
|
4 .. module:: operator |
|
5 :synopsis: Functions corresponding to the standard operators. |
|
6 .. sectionauthor:: Skip Montanaro <skip@automatrix.com> |
|
7 |
|
8 |
|
9 .. testsetup:: |
|
10 |
|
11 import operator |
|
12 from operator import itemgetter |
|
13 |
|
14 |
|
15 The :mod:`operator` module exports a set of functions implemented in C |
|
16 corresponding to the intrinsic operators of Python. For example, |
|
17 ``operator.add(x, y)`` is equivalent to the expression ``x+y``. The function |
|
18 names are those used for special class methods; variants without leading and |
|
19 trailing ``__`` are also provided for convenience. |
|
20 |
|
21 The functions fall into categories that perform object comparisons, logical |
|
22 operations, mathematical operations, sequence operations, and abstract type |
|
23 tests. |
|
24 |
|
25 The object comparison functions are useful for all objects, and are named after |
|
26 the rich comparison operators they support: |
|
27 |
|
28 |
|
29 .. function:: lt(a, b) |
|
30 le(a, b) |
|
31 eq(a, b) |
|
32 ne(a, b) |
|
33 ge(a, b) |
|
34 gt(a, b) |
|
35 __lt__(a, b) |
|
36 __le__(a, b) |
|
37 __eq__(a, b) |
|
38 __ne__(a, b) |
|
39 __ge__(a, b) |
|
40 __gt__(a, b) |
|
41 |
|
42 Perform "rich comparisons" between *a* and *b*. Specifically, ``lt(a, b)`` is |
|
43 equivalent to ``a < b``, ``le(a, b)`` is equivalent to ``a <= b``, ``eq(a, |
|
44 b)`` is equivalent to ``a == b``, ``ne(a, b)`` is equivalent to ``a != b``, |
|
45 ``gt(a, b)`` is equivalent to ``a > b`` and ``ge(a, b)`` is equivalent to ``a |
|
46 >= b``. Note that unlike the built-in :func:`cmp`, these functions can |
|
47 return any value, which may or may not be interpretable as a Boolean value. |
|
48 See :ref:`comparisons` for more information about rich comparisons. |
|
49 |
|
50 .. versionadded:: 2.2 |
|
51 |
|
52 The logical operations are also generally applicable to all objects, and support |
|
53 truth tests, identity tests, and boolean operations: |
|
54 |
|
55 |
|
56 .. function:: not_(obj) |
|
57 __not__(obj) |
|
58 |
|
59 Return the outcome of :keyword:`not` *obj*. (Note that there is no |
|
60 :meth:`__not__` method for object instances; only the interpreter core defines |
|
61 this operation. The result is affected by the :meth:`__nonzero__` and |
|
62 :meth:`__len__` methods.) |
|
63 |
|
64 |
|
65 .. function:: truth(obj) |
|
66 |
|
67 Return :const:`True` if *obj* is true, and :const:`False` otherwise. This is |
|
68 equivalent to using the :class:`bool` constructor. |
|
69 |
|
70 |
|
71 .. function:: is_(a, b) |
|
72 |
|
73 Return ``a is b``. Tests object identity. |
|
74 |
|
75 .. versionadded:: 2.3 |
|
76 |
|
77 |
|
78 .. function:: is_not(a, b) |
|
79 |
|
80 Return ``a is not b``. Tests object identity. |
|
81 |
|
82 .. versionadded:: 2.3 |
|
83 |
|
84 The mathematical and bitwise operations are the most numerous: |
|
85 |
|
86 |
|
87 .. function:: abs(obj) |
|
88 __abs__(obj) |
|
89 |
|
90 Return the absolute value of *obj*. |
|
91 |
|
92 |
|
93 .. function:: add(a, b) |
|
94 __add__(a, b) |
|
95 |
|
96 Return ``a + b``, for *a* and *b* numbers. |
|
97 |
|
98 |
|
99 .. function:: and_(a, b) |
|
100 __and__(a, b) |
|
101 |
|
102 Return the bitwise and of *a* and *b*. |
|
103 |
|
104 |
|
105 .. function:: div(a, b) |
|
106 __div__(a, b) |
|
107 |
|
108 Return ``a / b`` when ``__future__.division`` is not in effect. This is |
|
109 also known as "classic" division. |
|
110 |
|
111 |
|
112 .. function:: floordiv(a, b) |
|
113 __floordiv__(a, b) |
|
114 |
|
115 Return ``a // b``. |
|
116 |
|
117 .. versionadded:: 2.2 |
|
118 |
|
119 |
|
120 .. function:: inv(obj) |
|
121 invert(obj) |
|
122 __inv__(obj) |
|
123 __invert__(obj) |
|
124 |
|
125 Return the bitwise inverse of the number *obj*. This is equivalent to ``~obj``. |
|
126 |
|
127 .. versionadded:: 2.0 |
|
128 The names :func:`invert` and :func:`__invert__`. |
|
129 |
|
130 |
|
131 .. function:: lshift(a, b) |
|
132 __lshift__(a, b) |
|
133 |
|
134 Return *a* shifted left by *b*. |
|
135 |
|
136 |
|
137 .. function:: mod(a, b) |
|
138 __mod__(a, b) |
|
139 |
|
140 Return ``a % b``. |
|
141 |
|
142 |
|
143 .. function:: mul(a, b) |
|
144 __mul__(a, b) |
|
145 |
|
146 Return ``a * b``, for *a* and *b* numbers. |
|
147 |
|
148 |
|
149 .. function:: neg(obj) |
|
150 __neg__(obj) |
|
151 |
|
152 Return *obj* negated. |
|
153 |
|
154 |
|
155 .. function:: or_(a, b) |
|
156 __or__(a, b) |
|
157 |
|
158 Return the bitwise or of *a* and *b*. |
|
159 |
|
160 |
|
161 .. function:: pos(obj) |
|
162 __pos__(obj) |
|
163 |
|
164 Return *obj* positive. |
|
165 |
|
166 |
|
167 .. function:: pow(a, b) |
|
168 __pow__(a, b) |
|
169 |
|
170 Return ``a ** b``, for *a* and *b* numbers. |
|
171 |
|
172 .. versionadded:: 2.3 |
|
173 |
|
174 |
|
175 .. function:: rshift(a, b) |
|
176 __rshift__(a, b) |
|
177 |
|
178 Return *a* shifted right by *b*. |
|
179 |
|
180 |
|
181 .. function:: sub(a, b) |
|
182 __sub__(a, b) |
|
183 |
|
184 Return ``a - b``. |
|
185 |
|
186 |
|
187 .. function:: truediv(a, b) |
|
188 __truediv__(a, b) |
|
189 |
|
190 Return ``a / b`` when ``__future__.division`` is in effect. This is also |
|
191 known as "true" division. |
|
192 |
|
193 .. versionadded:: 2.2 |
|
194 |
|
195 |
|
196 .. function:: xor(a, b) |
|
197 __xor__(a, b) |
|
198 |
|
199 Return the bitwise exclusive or of *a* and *b*. |
|
200 |
|
201 |
|
202 .. function:: index(a) |
|
203 __index__(a) |
|
204 |
|
205 Return *a* converted to an integer. Equivalent to ``a.__index__()``. |
|
206 |
|
207 .. versionadded:: 2.5 |
|
208 |
|
209 |
|
210 Operations which work with sequences include: |
|
211 |
|
212 .. function:: concat(a, b) |
|
213 __concat__(a, b) |
|
214 |
|
215 Return ``a + b`` for *a* and *b* sequences. |
|
216 |
|
217 |
|
218 .. function:: contains(a, b) |
|
219 __contains__(a, b) |
|
220 |
|
221 Return the outcome of the test ``b in a``. Note the reversed operands. |
|
222 |
|
223 .. versionadded:: 2.0 |
|
224 The name :func:`__contains__`. |
|
225 |
|
226 |
|
227 .. function:: countOf(a, b) |
|
228 |
|
229 Return the number of occurrences of *b* in *a*. |
|
230 |
|
231 |
|
232 .. function:: delitem(a, b) |
|
233 __delitem__(a, b) |
|
234 |
|
235 Remove the value of *a* at index *b*. |
|
236 |
|
237 |
|
238 .. function:: delslice(a, b, c) |
|
239 __delslice__(a, b, c) |
|
240 |
|
241 Delete the slice of *a* from index *b* to index *c-1*. |
|
242 |
|
243 |
|
244 .. function:: getitem(a, b) |
|
245 __getitem__(a, b) |
|
246 |
|
247 Return the value of *a* at index *b*. |
|
248 |
|
249 |
|
250 .. function:: getslice(a, b, c) |
|
251 __getslice__(a, b, c) |
|
252 |
|
253 Return the slice of *a* from index *b* to index *c-1*. |
|
254 |
|
255 |
|
256 .. function:: indexOf(a, b) |
|
257 |
|
258 Return the index of the first of occurrence of *b* in *a*. |
|
259 |
|
260 |
|
261 .. function:: repeat(a, b) |
|
262 __repeat__(a, b) |
|
263 |
|
264 Return ``a * b`` where *a* is a sequence and *b* is an integer. |
|
265 |
|
266 |
|
267 .. function:: sequenceIncludes(...) |
|
268 |
|
269 .. deprecated:: 2.0 |
|
270 Use :func:`contains` instead. |
|
271 |
|
272 Alias for :func:`contains`. |
|
273 |
|
274 |
|
275 .. function:: setitem(a, b, c) |
|
276 __setitem__(a, b, c) |
|
277 |
|
278 Set the value of *a* at index *b* to *c*. |
|
279 |
|
280 |
|
281 .. function:: setslice(a, b, c, v) |
|
282 __setslice__(a, b, c, v) |
|
283 |
|
284 Set the slice of *a* from index *b* to index *c-1* to the sequence *v*. |
|
285 |
|
286 Many operations have an "in-place" version. The following functions provide a |
|
287 more primitive access to in-place operators than the usual syntax does; for |
|
288 example, the :term:`statement` ``x += y`` is equivalent to |
|
289 ``x = operator.iadd(x, y)``. Another way to put it is to say that |
|
290 ``z = operator.iadd(x, y)`` is equivalent to the compound statement |
|
291 ``z = x; z += y``. |
|
292 |
|
293 .. function:: iadd(a, b) |
|
294 __iadd__(a, b) |
|
295 |
|
296 ``a = iadd(a, b)`` is equivalent to ``a += b``. |
|
297 |
|
298 .. versionadded:: 2.5 |
|
299 |
|
300 |
|
301 .. function:: iand(a, b) |
|
302 __iand__(a, b) |
|
303 |
|
304 ``a = iand(a, b)`` is equivalent to ``a &= b``. |
|
305 |
|
306 .. versionadded:: 2.5 |
|
307 |
|
308 |
|
309 .. function:: iconcat(a, b) |
|
310 __iconcat__(a, b) |
|
311 |
|
312 ``a = iconcat(a, b)`` is equivalent to ``a += b`` for *a* and *b* sequences. |
|
313 |
|
314 .. versionadded:: 2.5 |
|
315 |
|
316 |
|
317 .. function:: idiv(a, b) |
|
318 __idiv__(a, b) |
|
319 |
|
320 ``a = idiv(a, b)`` is equivalent to ``a /= b`` when ``__future__.division`` is |
|
321 not in effect. |
|
322 |
|
323 .. versionadded:: 2.5 |
|
324 |
|
325 |
|
326 .. function:: ifloordiv(a, b) |
|
327 __ifloordiv__(a, b) |
|
328 |
|
329 ``a = ifloordiv(a, b)`` is equivalent to ``a //= b``. |
|
330 |
|
331 .. versionadded:: 2.5 |
|
332 |
|
333 |
|
334 .. function:: ilshift(a, b) |
|
335 __ilshift__(a, b) |
|
336 |
|
337 ``a = ilshift(a, b)`` is equivalent to ``a <``\ ``<= b``. |
|
338 |
|
339 .. versionadded:: 2.5 |
|
340 |
|
341 |
|
342 .. function:: imod(a, b) |
|
343 __imod__(a, b) |
|
344 |
|
345 ``a = imod(a, b)`` is equivalent to ``a %= b``. |
|
346 |
|
347 .. versionadded:: 2.5 |
|
348 |
|
349 |
|
350 .. function:: imul(a, b) |
|
351 __imul__(a, b) |
|
352 |
|
353 ``a = imul(a, b)`` is equivalent to ``a *= b``. |
|
354 |
|
355 .. versionadded:: 2.5 |
|
356 |
|
357 |
|
358 .. function:: ior(a, b) |
|
359 __ior__(a, b) |
|
360 |
|
361 ``a = ior(a, b)`` is equivalent to ``a |= b``. |
|
362 |
|
363 .. versionadded:: 2.5 |
|
364 |
|
365 |
|
366 .. function:: ipow(a, b) |
|
367 __ipow__(a, b) |
|
368 |
|
369 ``a = ipow(a, b)`` is equivalent to ``a **= b``. |
|
370 |
|
371 .. versionadded:: 2.5 |
|
372 |
|
373 |
|
374 .. function:: irepeat(a, b) |
|
375 __irepeat__(a, b) |
|
376 |
|
377 ``a = irepeat(a, b)`` is equivalent to ``a *= b`` where *a* is a sequence and |
|
378 *b* is an integer. |
|
379 |
|
380 .. versionadded:: 2.5 |
|
381 |
|
382 |
|
383 .. function:: irshift(a, b) |
|
384 __irshift__(a, b) |
|
385 |
|
386 ``a = irshift(a, b)`` is equivalent to ``a >>= b``. |
|
387 |
|
388 .. versionadded:: 2.5 |
|
389 |
|
390 |
|
391 .. function:: isub(a, b) |
|
392 __isub__(a, b) |
|
393 |
|
394 ``a = isub(a, b)`` is equivalent to ``a -= b``. |
|
395 |
|
396 .. versionadded:: 2.5 |
|
397 |
|
398 |
|
399 .. function:: itruediv(a, b) |
|
400 __itruediv__(a, b) |
|
401 |
|
402 ``a = itruediv(a, b)`` is equivalent to ``a /= b`` when ``__future__.division`` |
|
403 is in effect. |
|
404 |
|
405 .. versionadded:: 2.5 |
|
406 |
|
407 |
|
408 .. function:: ixor(a, b) |
|
409 __ixor__(a, b) |
|
410 |
|
411 ``a = ixor(a, b)`` is equivalent to ``a ^= b``. |
|
412 |
|
413 .. versionadded:: 2.5 |
|
414 |
|
415 |
|
416 The :mod:`operator` module also defines a few predicates to test the type of |
|
417 objects. |
|
418 |
|
419 .. note:: |
|
420 |
|
421 Be careful not to misinterpret the results of these functions; only |
|
422 :func:`isCallable` has any measure of reliability with instance objects. |
|
423 For example: |
|
424 |
|
425 >>> class C: |
|
426 ... pass |
|
427 ... |
|
428 >>> import operator |
|
429 >>> obj = C() |
|
430 >>> operator.isMappingType(obj) |
|
431 True |
|
432 |
|
433 .. note:: |
|
434 |
|
435 Python 3 is expected to introduce abstract base classes for |
|
436 collection types, so it should be possible to write, for example, |
|
437 ``isinstance(obj, collections.Mapping)`` and ``isinstance(obj, |
|
438 collections.Sequence)``. |
|
439 |
|
440 .. function:: isCallable(obj) |
|
441 |
|
442 .. deprecated:: 2.0 |
|
443 Use the :func:`callable` built-in function instead. |
|
444 |
|
445 Returns true if the object *obj* can be called like a function, otherwise it |
|
446 returns false. True is returned for functions, bound and unbound methods, class |
|
447 objects, and instance objects which support the :meth:`__call__` method. |
|
448 |
|
449 |
|
450 .. function:: isMappingType(obj) |
|
451 |
|
452 Returns true if the object *obj* supports the mapping interface. This is true for |
|
453 dictionaries and all instance objects defining :meth:`__getitem__`. |
|
454 |
|
455 .. warning:: |
|
456 |
|
457 There is no reliable way to test if an instance supports the complete mapping |
|
458 protocol since the interface itself is ill-defined. This makes this test less |
|
459 useful than it otherwise might be. |
|
460 |
|
461 |
|
462 .. function:: isNumberType(obj) |
|
463 |
|
464 Returns true if the object *obj* represents a number. This is true for all |
|
465 numeric types implemented in C. |
|
466 |
|
467 .. warning:: |
|
468 |
|
469 There is no reliable way to test if an instance supports the complete numeric |
|
470 interface since the interface itself is ill-defined. This makes this test less |
|
471 useful than it otherwise might be. |
|
472 |
|
473 |
|
474 .. function:: isSequenceType(obj) |
|
475 |
|
476 Returns true if the object *obj* supports the sequence protocol. This returns true |
|
477 for all objects which define sequence methods in C, and for all instance objects |
|
478 defining :meth:`__getitem__`. |
|
479 |
|
480 .. warning:: |
|
481 |
|
482 There is no reliable way to test if an instance supports the complete sequence |
|
483 interface since the interface itself is ill-defined. This makes this test less |
|
484 useful than it otherwise might be. |
|
485 |
|
486 Example: Build a dictionary that maps the ordinals from ``0`` to ``255`` to |
|
487 their character equivalents. |
|
488 |
|
489 >>> d = {} |
|
490 >>> keys = range(256) |
|
491 >>> vals = map(chr, keys) |
|
492 >>> map(operator.setitem, [d]*len(keys), keys, vals) # doctest: +SKIP |
|
493 |
|
494 .. XXX: find a better, readable, example |
|
495 |
|
496 The :mod:`operator` module also defines tools for generalized attribute and item |
|
497 lookups. These are useful for making fast field extractors as arguments for |
|
498 :func:`map`, :func:`sorted`, :meth:`itertools.groupby`, or other functions that |
|
499 expect a function argument. |
|
500 |
|
501 |
|
502 .. function:: attrgetter(attr[, args...]) |
|
503 |
|
504 Return a callable object that fetches *attr* from its operand. If more than one |
|
505 attribute is requested, returns a tuple of attributes. After, |
|
506 ``f = attrgetter('name')``, the call ``f(b)`` returns ``b.name``. After, |
|
507 ``f = attrgetter('name', 'date')``, the call ``f(b)`` returns ``(b.name, |
|
508 b.date)``. |
|
509 |
|
510 The attribute names can also contain dots; after ``f = attrgetter('date.month')``, |
|
511 the call ``f(b)`` returns ``b.date.month``. |
|
512 |
|
513 .. versionadded:: 2.4 |
|
514 |
|
515 .. versionchanged:: 2.5 |
|
516 Added support for multiple attributes. |
|
517 |
|
518 .. versionchanged:: 2.6 |
|
519 Added support for dotted attributes. |
|
520 |
|
521 |
|
522 .. function:: itemgetter(item[, args...]) |
|
523 |
|
524 Return a callable object that fetches *item* from its operand using the |
|
525 operand's :meth:`__getitem__` method. If multiple items are specified, |
|
526 returns a tuple of lookup values. Equivalent to:: |
|
527 |
|
528 def itemgetter(*items): |
|
529 if len(items) == 1: |
|
530 item = items[0] |
|
531 def g(obj): |
|
532 return obj[item] |
|
533 else: |
|
534 def g(obj): |
|
535 return tuple(obj[item] for item in items) |
|
536 return g |
|
537 |
|
538 The items can be any type accepted by the operand's :meth:`__getitem__` |
|
539 method. Dictionaries accept any hashable value. Lists, tuples, and |
|
540 strings accept an index or a slice: |
|
541 |
|
542 >>> itemgetter(1)('ABCDEFG') |
|
543 'B' |
|
544 >>> itemgetter(1,3,5)('ABCDEFG') |
|
545 ('B', 'D', 'F') |
|
546 >>> itemgetter(slice(2,None))('ABCDEFG') |
|
547 'CDEFG' |
|
548 |
|
549 .. versionadded:: 2.4 |
|
550 |
|
551 .. versionchanged:: 2.5 |
|
552 Added support for multiple item extraction. |
|
553 |
|
554 Example of using :func:`itemgetter` to retrieve specific fields from a |
|
555 tuple record: |
|
556 |
|
557 >>> inventory = [('apple', 3), ('banana', 2), ('pear', 5), ('orange', 1)] |
|
558 >>> getcount = itemgetter(1) |
|
559 >>> map(getcount, inventory) |
|
560 [3, 2, 5, 1] |
|
561 >>> sorted(inventory, key=getcount) |
|
562 [('orange', 1), ('banana', 2), ('apple', 3), ('pear', 5)] |
|
563 |
|
564 |
|
565 .. function:: methodcaller(name[, args...]) |
|
566 |
|
567 Return a callable object that calls the method *name* on its operand. If |
|
568 additional arguments and/or keyword arguments are given, they will be given |
|
569 to the method as well. After ``f = methodcaller('name')``, the call ``f(b)`` |
|
570 returns ``b.name()``. After ``f = methodcaller('name', 'foo', bar=1)``, the |
|
571 call ``f(b)`` returns ``b.name('foo', bar=1)``. |
|
572 |
|
573 .. versionadded:: 2.6 |
|
574 |
|
575 |
|
576 .. _operator-map: |
|
577 |
|
578 Mapping Operators to Functions |
|
579 ------------------------------ |
|
580 |
|
581 This table shows how abstract operations correspond to operator symbols in the |
|
582 Python syntax and the functions in the :mod:`operator` module. |
|
583 |
|
584 +-----------------------+-------------------------+---------------------------------+ |
|
585 | Operation | Syntax | Function | |
|
586 +=======================+=========================+=================================+ |
|
587 | Addition | ``a + b`` | ``add(a, b)`` | |
|
588 +-----------------------+-------------------------+---------------------------------+ |
|
589 | Concatenation | ``seq1 + seq2`` | ``concat(seq1, seq2)`` | |
|
590 +-----------------------+-------------------------+---------------------------------+ |
|
591 | Containment Test | ``obj in seq`` | ``contains(seq, obj)`` | |
|
592 +-----------------------+-------------------------+---------------------------------+ |
|
593 | Division | ``a / b`` | ``div(a, b)`` (without | |
|
594 | | | ``__future__.division``) | |
|
595 +-----------------------+-------------------------+---------------------------------+ |
|
596 | Division | ``a / b`` | ``truediv(a, b)`` (with | |
|
597 | | | ``__future__.division``) | |
|
598 +-----------------------+-------------------------+---------------------------------+ |
|
599 | Division | ``a // b`` | ``floordiv(a, b)`` | |
|
600 +-----------------------+-------------------------+---------------------------------+ |
|
601 | Bitwise And | ``a & b`` | ``and_(a, b)`` | |
|
602 +-----------------------+-------------------------+---------------------------------+ |
|
603 | Bitwise Exclusive Or | ``a ^ b`` | ``xor(a, b)`` | |
|
604 +-----------------------+-------------------------+---------------------------------+ |
|
605 | Bitwise Inversion | ``~ a`` | ``invert(a)`` | |
|
606 +-----------------------+-------------------------+---------------------------------+ |
|
607 | Bitwise Or | ``a | b`` | ``or_(a, b)`` | |
|
608 +-----------------------+-------------------------+---------------------------------+ |
|
609 | Exponentiation | ``a ** b`` | ``pow(a, b)`` | |
|
610 +-----------------------+-------------------------+---------------------------------+ |
|
611 | Identity | ``a is b`` | ``is_(a, b)`` | |
|
612 +-----------------------+-------------------------+---------------------------------+ |
|
613 | Identity | ``a is not b`` | ``is_not(a, b)`` | |
|
614 +-----------------------+-------------------------+---------------------------------+ |
|
615 | Indexed Assignment | ``obj[k] = v`` | ``setitem(obj, k, v)`` | |
|
616 +-----------------------+-------------------------+---------------------------------+ |
|
617 | Indexed Deletion | ``del obj[k]`` | ``delitem(obj, k)`` | |
|
618 +-----------------------+-------------------------+---------------------------------+ |
|
619 | Indexing | ``obj[k]`` | ``getitem(obj, k)`` | |
|
620 +-----------------------+-------------------------+---------------------------------+ |
|
621 | Left Shift | ``a << b`` | ``lshift(a, b)`` | |
|
622 +-----------------------+-------------------------+---------------------------------+ |
|
623 | Modulo | ``a % b`` | ``mod(a, b)`` | |
|
624 +-----------------------+-------------------------+---------------------------------+ |
|
625 | Multiplication | ``a * b`` | ``mul(a, b)`` | |
|
626 +-----------------------+-------------------------+---------------------------------+ |
|
627 | Negation (Arithmetic) | ``- a`` | ``neg(a)`` | |
|
628 +-----------------------+-------------------------+---------------------------------+ |
|
629 | Negation (Logical) | ``not a`` | ``not_(a)`` | |
|
630 +-----------------------+-------------------------+---------------------------------+ |
|
631 | Right Shift | ``a >> b`` | ``rshift(a, b)`` | |
|
632 +-----------------------+-------------------------+---------------------------------+ |
|
633 | Sequence Repetition | ``seq * i`` | ``repeat(seq, i)`` | |
|
634 +-----------------------+-------------------------+---------------------------------+ |
|
635 | Slice Assignment | ``seq[i:j] = values`` | ``setslice(seq, i, j, values)`` | |
|
636 +-----------------------+-------------------------+---------------------------------+ |
|
637 | Slice Deletion | ``del seq[i:j]`` | ``delslice(seq, i, j)`` | |
|
638 +-----------------------+-------------------------+---------------------------------+ |
|
639 | Slicing | ``seq[i:j]`` | ``getslice(seq, i, j)`` | |
|
640 +-----------------------+-------------------------+---------------------------------+ |
|
641 | String Formatting | ``s % obj`` | ``mod(s, obj)`` | |
|
642 +-----------------------+-------------------------+---------------------------------+ |
|
643 | Subtraction | ``a - b`` | ``sub(a, b)`` | |
|
644 +-----------------------+-------------------------+---------------------------------+ |
|
645 | Truth Test | ``obj`` | ``truth(obj)`` | |
|
646 +-----------------------+-------------------------+---------------------------------+ |
|
647 | Ordering | ``a < b`` | ``lt(a, b)`` | |
|
648 +-----------------------+-------------------------+---------------------------------+ |
|
649 | Ordering | ``a <= b`` | ``le(a, b)`` | |
|
650 +-----------------------+-------------------------+---------------------------------+ |
|
651 | Equality | ``a == b`` | ``eq(a, b)`` | |
|
652 +-----------------------+-------------------------+---------------------------------+ |
|
653 | Difference | ``a != b`` | ``ne(a, b)`` | |
|
654 +-----------------------+-------------------------+---------------------------------+ |
|
655 | Ordering | ``a >= b`` | ``ge(a, b)`` | |
|
656 +-----------------------+-------------------------+---------------------------------+ |
|
657 | Ordering | ``a > b`` | ``gt(a, b)`` | |
|
658 +-----------------------+-------------------------+---------------------------------+ |
|
659 |