質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.50%
for

for文は、様々なプログラミング言語で使われている制御構造です。for文に定義している条件から外れるまで、for文内の命令文を繰り返し実行します。

Python 3.x

Python 3はPythonプログラミング言語の最新バージョンであり、2008年12月3日にリリースされました。

Q&A

解決済

3回答

652閲覧

[a, a , b, b, c ,c]を表現したい

退会済みユーザー

退会済みユーザー

総合スコア0

for

for文は、様々なプログラミング言語で使われている制御構造です。for文に定義している条件から外れるまで、for文内の命令文を繰り返し実行します。

Python 3.x

Python 3はPythonプログラミング言語の最新バージョンであり、2008年12月3日にリリースされました。

0グッド

0クリップ

投稿2018/08/23 09:37

編集2018/08/23 09:43

やりたいこと

Pythonにてリストの[a, a , b, b, c ,c]を返したいです。
思い当たる記述をしましたが、思うようになりません。
どのように記述すればリストの[a, b, c]から[a, a , b, b, c ,c]を表現できますでしょうか?

試したこと

>>> ['a*2', 'b*2', 'c*2'] ['a*2', 'b*2', 'c*2']
>>> ['a'*2, 'b'*2, 'c'*2] ['aa', 'bb', 'cc']
>>> ['a', 'b', 'c'] * 2 ['a', 'b', 'c', 'a', 'b', 'c']

バージョン

Python 3.6.6

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

LouiS0616

2018/08/23 09:39

乗算に拘る理由はなんですか?
退会済みユーザー

退会済みユーザー

2018/08/23 09:44

質問ありがとうございます。乗算でなければならないわけではなかったです。乗算にはこだわりませんので、[a, a , b, b, c ,c]を表現したいです。投稿内容は修正しました。
guest

回答3

0

ベストアンサー

新しくリストを作り、各要素を二回ずつ押し込んでいけば良いです。

Python

1>>> src = list('abc') 2>>> src 3['a', 'b', 'c'] 4>>> 5>>> dst = [] 6>>> for elem in src: 7... for _ in range(2): 8... dst.append(elem) 9... 10>>> dst 11['a', 'a', 'b', 'b', 'c', 'c']

リスト内包表記を使うともう少し簡潔に書けます。

Python

1>>> dst = [e for e in src for _ in range(2)] 2>>> dst 3['a', 'a', 'b', 'b', 'c', 'c']

元のリストに押し込んでいく方法もありますね。あまり分かりやすくは無いですが。

Python

1>>> for i, e in enumerate(src[:]): 2... src.insert(2*i, e) 3... 4>>> src 5['a', 'a', 'b', 'b', 'c', 'c']

投稿2018/08/23 09:46

編集2018/08/23 09:55
LouiS0616

総合スコア35658

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

退会済みユーザー

退会済みユーザー

2018/08/23 09:50

早々にありがとうございました。試したところ、繰り返すことができました。
guest

0

もう回答済みですが、別解。

python

1a = list('abc') 2print(a) 3 4b = sum([list(a) for a in zip(a, a)], []) 5print(b)

無駄な一般化。

python

1a = list('abc') 2print(a) 3 4c = [a] * 4 5b = sum([list(a) for a in zip(*c)], []) 6print(b)

投稿2018/08/23 12:58

編集2018/08/23 13:01
mkgrei

総合スコア8560

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

0

イメージ説明

[[x, x] for x in src] で [['a', 'a'], ['b', 'b'], ['c', 'c']] を得る。
後は、これを flatten することを考えた。

参考情報

  • Pythonでリストをflattenする方法まとめ

http://d.hatena.ne.jp/xef/20121027/p2

投稿2018/08/23 12:56

katoy

総合スコア22324

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.50%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問