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

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

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

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

Python

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

ArrayList

Java用のタグです。arrayListはListインターフェースを実装した、リサイズ可能な配列用クラスです。

配列

配列は、各データの要素(値または変数)が連続的に並べられたデータ構造です。各配列は添え字(INDEX)で識別されています。

Q&A

解決済

2回答

321閲覧

リスト内包表記を使って要素を削除した後の配列が結合に失敗する問題について

退会済みユーザー

退会済みユーザー

総合スコア0

Python 3.x

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

Python

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

ArrayList

Java用のタグです。arrayListはListインターフェースを実装した、リサイズ可能な配列用クラスです。

配列

配列は、各データの要素(値または変数)が連続的に並べられたデータ構造です。各配列は添え字(INDEX)で識別されています。

0グッド

0クリップ

投稿2020/01/18 17:21

前提・実現したいこと

2つの数字の配列が与えられ、それぞれの配列から要素0を削除した上で
結合しようとしています。

nums1 = [0,1,0,2,0] nums2 = [3,6,0,4]

の場合

[1,2,3,6,4]

としたいです。

発生している問題・エラーメッセージ

現在のソースコードでは出力が以下のようになっており、

[1, 2] [3, 6, 4] None

前回質問した「出力する配列に半角スペースができてしまう問題について」と関係があると思いますが、なぜ結合もできないのか理由が分からず、解決できていません。

該当のソースコード

python

1nums1 = [0,1,0,2,0] 2 3nums2 = [3,6,0,4] 4 5nums1 = [i for i in nums1 if i != 0] 6print(nums1) 7nums2 = [j for j in nums2 if j != 0] 8print(nums2) 9result = nums1.extend(nums2) 10print(result)

試したこと

半角を削除した場合、

python

1nums1 = [0,1,0,2,0] 2 3nums2 = [3,6,0,4] 4 5nums1 = [i for i in nums1 if i != 0] 6nums1 = str(nums1).replace(' ', '') 7nums2 = [j for j in nums2 if j != 0] 8nums2 = str(nums2).replace(' ', '') 9print(nums1, nums2) 10result = nums1.extend(nums2) 11print(result)

エラー文が以下に変わり、依然として解決ができておらず、リスト内包表記で一括削除する方法がいけないのでしょうか。

[1,2] [3,6,4] AttributeError: 'str' object has no attribute 'extend' Line 10 in <module> (Solution.py)

補足情報(FW/ツールのバージョンなど)

Python 3.7.4

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

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

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

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

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

guest

回答2

0

ベストアンサー

list.extendメソッドはメソッドが呼ばれたlist自身を変更し、返り値としてはNoneを返します。

リスト内包表記自体には問題はありません。また、str型に変換した後には当然list型として操作することはできません。

投稿2020/01/18 17:39

hayataka2049

総合スコア30933

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

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

0

list.extend()は合成されたリストを返す関数ではありません。listを拡張する関数です。

なので

python

1result = nums1.extend(nums2)

は num1 が拡張されて そこにnum2が格納されます。
またlist.extend()必ずはかならずNoneを返します。
なのでresultは必ずNoneです。

半角スペース~は関係ありません。

投稿2020/01/18 17:37

tatamyiwathy

総合スコア1039

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

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問