2015-02-20 28 views
5

Yineleyiciler için alışmaya çalışıyorum. Neden yazarsanızNeden str (ters çevrilmiş (...)) ters çevrilmiş dizeyi vermiyor?

b = list(reversed([1,2,3,4,5])) 

Bana bir ters listesini verecektir fakat

c = str(reversed('abcde')) 

bana ters dize vermeyecektir?

+0

katılmak , 'str (tersine çevrilmiş ('abcde'))' nesneyi str ([]) 'ile aynı dizge olarak verir. vs .. yapar –

+0

İlgili: [Python'da bir dizeyi ters çevir] (http: // stackoverflow .com/q/931092/1497596) – DavidRR

+0

Lütfen sorularınızı gözden geçirin ve kabul edilmeyi bekleyen cevaplar olup olmadığını öğrenin (a bu konudakilerden biri. – alecxe

cevap

9

Python'da, reversed aslında bir ters yineleyici döndürür. Yani, yineleyici üzerinde uygulanan list size liste nesnesini verecektir.

İlk durumda, giriş de bir listeydi, bu nedenle reversed yineleyiciye uygulanan list sonucu size uygun görünüyordu.

İkinci durumda, döndürülen yineleyici nesnesine uygulanan str gerçekte size bunun dize temsilini verecektir.

Bunun yerine, dilim yöntemini uzatmak bu

>>> ''.join(reversed('abcde')) 
edcba 
+0

Teşekkürler dize temsili dizgisi ne olduğundan emin değilim? Str() bunu yapmazken, tersine çevirilmiş dizeyi tekrar oluşturmak için yinelemeli çünkü (işe yararsız terminolojimden özür dilerim), birleştirme işini kullanıyor mu? – Yunti

+0

Str Nesneyi bir dizeye dönüştürmeyi deneyin. Ters yineleyici bir nesne olduğundan, bir dizeye dönüştürülmeye çalışılacaktır. Ancak, yineleyiciyi yineleyin ve yineleyici – thefourtheye

+0

'dan tüm dizelerle yeni bir dize oluşturun. Teşekkürler str() bir liste oluşturmak için liste gibi yeni bir dize oluşturmak için yinelenmez. Str() bir dizeyi nasıl oluşturur veya düzenler? Immutable vs bir dize nedeniyle fark değiştirilemez bir str() aynı şekilde bir dize yeniden oluşturamazsınız böylece – Yunti

4

başka yolu gibi, yineleyici değerleri yineleme ve str.join fonksiyonu ile hepsini katılması gerekir. dize tarafından more details

>>> a = "abcde" 
>>> a[::-1] 
'edcba' 
>>> 

listelemek için -> liste ters -> bunun üzerine listeyi arayarak sen ne yaparsın ters nesne üzerinde yinelemek gerekiyor listesine

>>> a 
'abcde' 
>>> b = list(a) 
>>> b 
['a', 'b', 'c', 'd', 'e'] 
>>> b.reverse() 
>>> b 
['e', 'd', 'c', 'b', 'a'] 
>>> "".join(b) 
'edcba' 
>>> 
İlgili konular