2016-07-13 5 views
-5

リストから重複した値を削除しようとしています。定義済みの変数を使用して、Pythonのリストから重複した値を削除する方法

これは私がこれまで持っているものです。

list1=[1,2,3,4,3,2,1] 
list2=[] 
l=len(list1) 

for i in range(l): 
    if list1[i] not in list2: 
     list2.append(list1[i]) 

print(list2) 
# [1, 2, 3, 4] 

そして、それだけで正常に動作します。

しかし、あなたは以下の条件で同じ結果を得ることができる場合、私は疑問に思って:

条件:ループを使用することはでき

  • はアイテム
  • を削除するために事前定義された関数を使うべきではありませんしかし、一度だけ
  • その他の第2リストを使用しないでください。

私は試みましたが、何も進展しませんでした。出来ますか..?

+3

はい、可能です。あなたのコードを教えてください。 –

+0

「他の第2リストは使用しないでください」とはどういう意味ですか?元のリストと結果のリストを使用できますか?合計2つのリストですか? –

+3

この質問には尋問者の試みが含まれておらず、人為的な制約が曖昧に定義されているため、投票を終了すること。 –

答えて

2

setを使用してください。 setは、技術的にはタイプです。技術的に正しいものが最良の最良のものです。

>>> type(set) 
<class 'type'> 
>>> set([1,1,1,1,1,1,2]) 
{1, 2} 
0

これはサディスティックルールに従っていますか?

alist = [1,2,3,4,1,1,6,7,2,2,8,10] 

i = 0 
while i < len(alist): 
    if alist[i] in alist[i+1:]: 
     del alist[i] 
     i -= 1 
    i += 1 
print(alist) 
#[3, 4, 1, 6, 7, 2, 8, 10] 

返されたリスト内の項目の順序は奇妙に見えるが、実際に何が起こるかは、すべての項目の最後の外観が保たれているということであるかもしれません。

しかし、私はあなたのコードで時間を過ごすことをお勧めしません。このようなiで遊ぶことはアドバイスできません。また、list(set(alist))を使用して解決策(あなたのルールを満たしていない可能性があります)は当然のことです。

+0

'remove'は関数です。これは実際には重要ではないかもしれませんが、OPの質問のように、これは正しくありません。 –

+0

あなたは 'del alist [i]'することができます。それがうまくいくと確信しています。 –

+1

ありがとうございました。 'len()'も関数ですが、あなたの教授にはあなたがそれを解決したと言いますが、 'print()'は関数なので結果を表示することはできません。 –

関連する問題