Bu hep kafamı karıştırmıştır. Bu daha iyi olur gibi görünüyor:
my_list = ["Hello", "world"]
print(my_list.join("-"))
# Produce: "Hello-world"
Bundan daha iyi:
my_list = ["Hello", "world"]
print("-".join(my_list))
# Produce: "Hello-world"
Böyle olmasının özel bir nedeni var mı?
Bunun nedeni, sadece listelerin değil, herhangi bir yinelenebilir dosyanın birleştirilebilmesidir, ancak sonuç ve "joiner" her zaman dizelerdir.
Örneğin:
import urllib2
print('\n############\n'.join(
urllib2.urlopen('http://data.stackexchange.com/users/7095')))
Çünkü join()
yöntemi liste sınıfı yerine string sınıfında mı?
Komik göründüğüne katılıyorum.
Bkz. http://www.faqs.org/docs/diveintopython/odbchelper_join.html:
Tarihi not. İlk öğrendiğimde Python, join'in bir yöntem olmasını bekliyordum şeklini alacak olan bir listenin bir argüman olarak sınırlayıcı. Çok sayıda insanlar da aynı şekilde hissediyor ve birleştirme yönteminin arkasındaki hikaye. Önceki Python 1.6'ya kadar, dizgiler tüm bu faydalı yöntemler. Orada bir içeren ayrı bir dize modülü tüm dize işlevleri; her biri fonksiyonu ilk olarak bir dize alır argüman. Fonksiyonlar kabul edildi üzerine koyacak kadar önemli dizelerin kendileri, ki bu mantıklıydı gibi işlevler için alt, üst ve bölünmüş. Ancak birçok sıkı Python programcılar yeni birleşime itiraz etti yöntemi olması gerektiğini savunarak yöntemi yerine listenin veya hiç hareket etmemeli, sadece kalmalı eski string modülünün bir parçası (ki içinde hala pek çok faydalı şey var). Ben sadece yeni birleştirme yöntemini kullanıyorum, ancak şu kodların yazıldığını göreceksiniz şekilde ve eğer gerçekten sizi rahatsız ediyorsa, siz eski string.join işlevini kullanabilir yerine.
--- Mark Pilgrim, Dive into Python