今、pythonの勉強をしている学生です。
どうしてもわからない問題があるので回答よろしくお願いします。
下記のようなlistの例があった時、①②のような操作を行いたいです。
①()内の左の要素が連続する場合後ろの要素を抜き出したい
ー>例えば,(33, 695), (34, 685)の場合、(34,685)を抽出したいということです
②前後ともに連続しない(孤立している)場合も、抜き出したい
ー>例えば、listの例では(132, 737)がそれに該当します。
理想的な回答としては
[(34, 685), (132, 737), (229, 674), (328, 704)]
となることです。
listの例
[(33, 695), (34, 685), (132, 737), (228, 688), (229, 674), (327, 684), (328, 704)]
今は下記プログラムのように連続した場合、後ろを抽出するプログラムを何とか書けたところです。②で詰まっています。
非常に汚いコードで申し訳ないです。
lの長さは本来もっと長いことを想定しています。
python
1cnt = 0 2k = 0 3a = [] 4final = [] 5l = [(33, 695), (34, 685), (132, 737), (228, 688), (229, 674), (327, 684), (328, 704)] 6 7for i in l: 8 if cnt == 0: 9 a.append(i) 10 else: 11 if i[0] - a[k][0] < 2: 12 final.append(i) 13 a.append(i) 14 else: 15 a.append(i) 16 k += 1 17 cnt += 1
[(34, 685), (229, 674), (328, 704)]
宜しくお願い致します。
環境
Windows 10
python 3.7
回答7件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。