Pythonでリストの要素の順番を入れ替え、結合したい
以下のようなリスト(入力list)があります。"1"もしくは"2"が出てきたら、それぞれ次の要素と順番を入れ替え、かつ1つの要素に結合するスクリプトを書きたいのですが、案はありますでしょうか。以下の出力listのような出力を望んでいます。
入力 list=['a', 'b', '1', 'c', 'd', 'e', '2', 'f', '2', 'g']
出力 list=['a', 'b', 'c1', 'd', 'e', 'f2', 'g2']
1や2が出てくる回数はリストにより異なり、また1より2の方が先に出てくる場合もあります。またリストによっては1がない場合、2がない場合もあります。(ただし '1', '2' のように1と2が連続で出てくることはありません。かならず間に別の要素が入ります)
indexを使って要素の順番の入れ替えはできるようなのですが、最初に出てきたものしかとらえないので、例えば上の例でいうと2,gがg2に変換されません。また結合もできていませんが、indexを使った入れ替え方法を一応以下に記しておきます:
i=list.index("1")
j=list.index("2")
list[i],list[i+1]=list[i+1],list[i]
list[j],list[j+1]=list[j+1],list[j]
とすると、出力リストは['a', 'b', 'c', '1', 'd', 'e', 'f', '2', '2', 'g']となります。
(最後のg2が変換できていない。また結合もできていない)
Python初心者です。よろしくお願いします。
No.1ベストアンサー
- 回答日時:
#スペース削除対策で スペースを_で表わしている
#使用する際にはスペースに置換すること
i=0
#"1","2"が最後にくることはないので、len(list)-1までの範囲で調べる
while ( i < len(list) - 1 ) :
____# 要素が"1"か"2"か調べる。
____if list[i] == "1" or list[i] == "2":
________# 次の要素と入れかえて結合した文字列list[i+1] + list[i]
________# を 現在の要素の値にする
________list[i] = list[i+1] + list[i]
________#次の要素は不要なので削除する
________del list[i+1]
____i += 1
入れ替えるとか結合するとかをちょっと難しく考えすぎてしまったのではないでしょうか?
ありがとうございます!!
そんなに簡単にできたのですね。確かに難しく考えすぎていたかもしれません。
何時間も頭をひねっていたので、ものすごいすっきり感です。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- 大学・短大 C言語線形リストの問題です 3 2022/12/22 00:45
- その他(プログラミング・Web制作) pythonのmap、結果の利用は1度だけ? 5 2022/06/11 12:33
- Visual Basic(VBA) ユーザーフォームの表示を追加したい 2 2023/03/26 23:18
- PHP 配列の値の更新方法について 1 2022/08/05 09:49
- PHP PHPの構文で間違えが分からない 5 2022/07/11 16:38
- その他(プログラミング・Web制作) python 3.10で 同じlistに同じ構文で同じデータ代入した結果が異なる現象発生 7 2022/06/18 11:08
- PHP SQLとPHPの連結方法がわからないのでアドバイスお願い致します 1 2022/07/12 12:16
- PHP style.cssのjQuery条件付きcssが機能しない 4 2022/07/17 18:27
- PHP PHPでCSVを出力するさいに、ループの中で前の行の値を変更したい 3 2022/10/27 17:44
- その他(プログラミング・Web制作) このプログラミングをどう組みますか? Googlecolabでやってるんですが、出来る方お願いします 1 2022/07/13 10:52
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
STLのlistで重複するものだけを...
-
C# GetFilesで複数のファイルの...
-
Application.ScreenUpdating = ...
-
JSONで文字列が長い時
-
formで特定のinputを送信しない...
-
セレクトメニューで2つの項目...
-
<SELECT>タグの折り返し
-
文字の横にプルダウンを表示さ...
-
実行時エラー 3020の対策
-
16進の10進変換について
-
awkの正規表現での最左最短マッ...
-
数値英単語変換
-
シェルスクリプトで、空白(ス...
-
selectタグ内の特定のoptionの...
-
sendmailで複数の宛先にメール...
-
処理終了後、他のページへジャ...
-
Pythonでコンソールをクリアす...
-
構造体の各データの表示につい...
-
複数列を持ったリストボックス...
-
pythonのプログラミングについ...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
どちのほうがすきですか?
-
Python - Excel で Webからデー...
-
C# GetFilesで複数のファイルの...
-
【python】辞書作成(ネスト)を...
-
STLのlistで重複するものだけを...
-
C言語:単語カウント
-
C言語 leetcode21 Merge Two So...
-
PerlでXMLを解析して出力する。
-
複数のIP取得
-
可変引数をconstで参照渡し
-
Pythonでリストの要素の順番を...
-
Application.ScreenUpdating = ...
-
JSONで文字列が長い時
-
formで特定のinputを送信しない...
-
文字の横にプルダウンを表示さ...
-
16進の10進変換について
-
実行時エラー 3020の対策
-
メモリをアドレスを直接指定し...
-
[python] 文字列を変数名として...
-
ACCESS テキストボックスを隙...
おすすめ情報