"Ishwor" <[EMAIL PROTECTED]> wrote in message news:[EMAIL PROTECTED]
If you are curious about the detailed behavior of the CPython implementation, the dis module is one aid. Compare >>> def f1(l): ... l.extend([1]) ... return l ... >>> def f2(l): ... l += [1] ... return l ... >>> import dis >>> dis.dis(f1) 0 SET_LINENO 1 3 SET_LINENO 2 6 LOAD_FAST 0 (l) 9 LOAD_ATTR 1 (exten 12 LOAD_CONST 1 (1) 15 BUILD_LIST 1 18 CALL_FUNCTION 1 21 POP_TOP 22 SET_LINENO 3 25 LOAD_FAST 0 (l) 28 RETURN_VALUE 29 LOAD_CONST 0 (None) 32 RETURN_VALUE >>> dis.dis(f2) 0 SET_LINENO 1 3 SET_LINENO 2 6 LOAD_FAST 0 (l) 9 LOAD_CONST 1 (1) 12 BUILD_LIST 1 15 INPLACE_ADD 16 STORE_FAST 0 (l) 19 SET_LINENO 3 22 LOAD_FAST 0 (l) 25 RETURN_VALUE 26 LOAD_CONST 0 (None) 29 RETURN_VALUE Since INPLACE_ADD ends up calling .extend, the direct call should, on average, be slightly faster. But the difference is comparable to the noise of the variation in memory allocation time. l.append(item) might be even faster than l.extend([item]), especially when item is not a contant, since the unneeded list is not built. Terry J. Reedy -- http://mail.python.org/mailman/listinfo/python-list