The Cost of Dynamism (was Re: Pyhon 2.x or 3.x, which is faster?)
BartC
bc at freeuk.com
Mon Mar 14 17:17:28 EDT 2016
On 14/03/2016 21:00, Christian Gollwitzer wrote:
> Am 14.03.16 um 21:31 schrieb BartC:
>> There are good reasons for wanting to do so. Try writing this function
>> in Python:
>>
>> def swap(a,b):
>> b,a = a,b
>>
>> x="one"
>> y="two"
>> swap(x,y)
>>
>> print (x,y)
>>
>> so that it displays "two" "one".
>
> The pervert thing is that this is nearly there:
>
> def swap(a,b):
> c=[]
> c.append(*a)
> a[:]=b[:]
> b[:]=c[:]
>
> x=["one"]
> y=["two"]
>
> swap(x,y)
> print x
print y
The list thing I've already tried. Although you've made it swap() more
complicated than it need be. I used
def swap(a,b):
b[0],a[0]=a[0],b[0]
(Perhaps yours swapped the entire lists not just the first element? But
that didn't work when I tried your code.)
The problem is that in general, x and y can be anything; maybe x is an
element of a list, y is tuple. Even if by chance they were lists, then
you'd want the entire list swapped.
>
> Now with a similar example, I had created a bug some time ago.
It looks like you created a feature not a bug...
--
Bartc
More information about the Python-list
mailing list