Hacker Newsnew | past | comments | ask | show | jobs | submitlogin

I would think a more natural approach of making join a method of any sequence would result in cleaner programs.

(a, b, c).join(',')

instead of: ','.join((a, b, c))



I agree. Join should word the same as split:

   >>> "abcbe".split("b")
   ['a', 'c', 'e']
So to get back the original string you should be able to say:

   ['a', 'c', 'e'].join("b")   #!!! WRONG !!!
but this doesn't work and instead you have to say:

   >>> "b".join(['a', 'c', 'e'])
   'abcbe'


You miss out on a nice side-effect of join being a method of string:

br = '<br>'.join

br((a, b, c))

Personally I think it makes more sense the ruby way but it's never bugged me.


Wow... This one is quite pretty. Really. A very nice side effect of the "everything is an object" concept.


There's not any reason you need objects for that, though. Python's join in the string module is called as join(list [,sep])*, and you could say

  def br(sl):
      return string.join(sl, "<br>")
or

  br = lambda sl: string.join(sl, "<br>")
for the same effect. It's actually due to first-class functions.




Consider applying for YC's Fall 2026 batch! Applications are open till July 27.

Guidelines | FAQ | Lists | API | Security | Legal | Apply to YC | Contact

Search: