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

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

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

Pythonは、コードの読みやすさが特徴的なプログラミング言語の1つです。 強い型付け、動的型付けに対応しており、後方互換性がないバージョン2系とバージョン3系が使用されています。 商用製品の開発にも無料で使用でき、OSだけでなく仮想環境にも対応。Unicodeによる文字列操作をサポートしているため、日本語処理も標準で可能です。

Q&A

解決済

3回答

898閲覧

Pythonで111222333といった、ある値が3つ連続した後次の数字が来るようなリストを作成する方法は?

So0622

総合スコア8

Python

Pythonは、コードの読みやすさが特徴的なプログラミング言語の1つです。 強い型付け、動的型付けに対応しており、後方互換性がないバージョン2系とバージョン3系が使用されています。 商用製品の開発にも無料で使用でき、OSだけでなく仮想環境にも対応。Unicodeによる文字列操作をサポートしているため、日本語処理も標準で可能です。

0グッド

0クリップ

投稿2022/08/03 09:47

実現したいこと

*超初心者な質問で申し訳ありません。
Pythonで
[1,1,1,2,2,2,3,3,3,4,4,4,5,5,5,6,6,6,・・・・]のように、ある値が3つ連続した後、次の数字が来るようなリストを作成したい場合、どういったコードになるでしょうか?

補足情報

以下の写真のようにlist(range())を使うと単純な連番を出すことができるとわかりました。
イメージ説明

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

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

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

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

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

guest

回答3

0

効率良い方法をご紹介します。
それなりに大きなリストを作らないと体感はできないかもですが。

Python

1>>> [n for n in range(1, 6) for _ in range(3)] 2[1, 1, 1, 2, 2, 2, 3, 3, 3, 4, 4, 4, 5, 5, 5]

more-itertoolsを使うのも良い選択です。意味的に分かり易く、効率も良いコードが書けます。

Python

1>>> import more_itertools 2>>> [*more_itertools.repeat_each(range(1, 6), n=3)] 3[1, 1, 1, 2, 2, 2, 3, 3, 3, 4, 4, 4, 5, 5, 5]

さらに踏み込んで

必要なリスト長が前以て分からないときは次のように処理します。

Python

1import itertools 2import more_itertools 3 4it = more_itertools.repeat_each(itertools.count(start=1), n=3)

itはイテレータです。先頭から順に 1,1,1,2,2,2,3,3,3,... と値を取り出せます。

投稿2022/08/03 10:12

編集2022/08/03 10:17
LouiS0616

総合スコア35660

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

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

0

itertools の chain と tee で。

python

1from itertools import chain, tee 2 3rep = [*chain.from_iterable(zip(*tee(range(1, 11), 3)))] 4print(rep)

投稿2022/08/03 10:38

melian

総合スコア19780

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

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

0

ベストアンサー

rangeを使うのであれば、大きなサイズでなければ、下記が簡単です。

Python

1foo = sorted(list(range(1,6))*3)

投稿2022/08/03 09:56

otn

総合スコア84553

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

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

So0622

2022/08/03 10:03

sortedで並べ替えるってことですね!勉強になりました。ありがとうございます!
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問