
[code]

    list1=[]
    list2=[]
    for c in "iterable":
        list1.append(c)
    while len(list1)>0:
        j=-1#これと
        d=list1.pop(j)
        j+=1#これは別にいらない。
        list2.append(d)
    print(list2)
    
[/code]

というコードによって文字列を逆順にしました。  
①もう少し短く書けないでしょうか？

本当は、whileループを使わずに、forループのみを用いて同じことをしたかったのですが、  
appendに変数`c`のインデックスを指定した文字を入れるにはどうすればよいかわかりませんでした。  
②forループのみでappendメソッドを用いて文字列を最後から入れていくコードは書けるのでしょうか？  
**（※②の質問に追記）**  
この質問では、`for`と`append`、インデックスの指定方法（別途必要であれば）の３つの要素から成るコードで冒頭のコードを書き換えることができないかという旨で質問しました。  
なので、コメントに書いてくださったようにlen関数を使うことでインデックスを指定することができるのであればlen関数が含まれているか否かは問いません。

以上２つが疑問点です。


CC BY-SA 4.0
2018-07-22T13:44:57.830
46839
2018-07-22T15:06:43.413
2018-07-22T14:15:01.983
29238
29238
question
python
文字列を逆にしてリストに格納するコードについて


①の「もう少し短く書けないでしょうか？」についてはパスさせてもらって、②だけですが、こんなのではどうですかと言うのを。

[code]

    str = "string"
    list = []
    for i in range(len(str)-1,-1,-1):
        list.append(str[i])
    
[/code]

「インデックスの指定方法」と言う追記がありましたので、文字列のインデックスを指定して、文字を取り出すのはありと解釈しました。


CC BY-SA 4.0
2018-07-22T14:22:32.570
46840
2018-07-22T14:22:32.570
13972
46839
answer


単に文字列の後ろから文字をなめていくというだけなら、下のようにできます。[OOPer
さんの回答](https://ja.stackoverflow.com/a/46840/19110)と同じく、文字列の最後の文字から順番にインデックス指定して詰めています。

[code]

    s = "string"
    l = []
    for i in range(len(s)):
      l.append(s[len(s) - i - 1])
    
[/code]

また、今回の要件に合っているか微妙ですが、slice を使ってリストを部分的に取り出せることと、slice には開始点、終了点、step
数を指定できること、およびそれらには負の値を指定できることを使うと、次のように書くこともできます。

[code]

    s = list("string")
    l = s[::-1]
    
[/code]


CC BY-SA 4.0
2018-07-22T14:58:23.067
46842
2018-07-22T14:58:23.067
19110
46839
answer


こんなのはいかがでしょうか?  
行数を少なくすることはできますし、わかりやすいと思います。

[code]

    l = list("Hello")
    l.reverse()
    
    print(l)
    
[/code]


CC BY-SA 4.0
2018-07-22T15:06:43.413
46843
2018-07-22T15:06:43.413
5246
46839
answer