3 ms·
So you think you know Python
Quiz: what is the value of foo after this code is run?
foo=[0];bar=[foo];foo[0]=bar
Extra credit:
1) what is bar[0]
2) foo==bar
- jbotz 6y agoWell, don't do that. It's just a circular data structure, many (or even most) languages give you enough rope to hang yourself with one of those. Nothing particularly surprising or Python-specific about it.
- deleted 6y ago[deleted]
- HelloFellowDevs 6y agofoo = [bar[foo]] bar[0] = foo false if wrong please correct accordingly.
- kazinator 6y agoWhat you have is a circular structure. foo and bar are distinct objects, so foo == bar is false. However, they are similar objects: they have exactly the same structure. If we had a function for structural comparison which handles cycles, that function would have to conclude that foo and bar are structurally equal. This is because of symmetry in the cycle: bar[0] is foo and, symmetrically, foo[0] is bar. Both foo and bar are one-element lists whose elements are, respectively, bar and foo.
- asicsp 6y agoThere's a repo dedicated for such snippets: https://github.com/satwikkansal/wtfpython https://github.com/satwikkansal/wtfpython
- ddorian43 6y agoI'm dissappointed.