0

これは私が行う方法を知っている限りですが、正しく行っているかどうかはわかりません。

L = [4, 10, 4, 2, 9, 5, 4 ]

n = len(L)
element = ()


if element in L:
    print(element)

print("number occurs in list at the following position, if element not in list")
print("this number does not occur in the list")

複数回表示される要素を取得して、次のように印刷するにはどうすればよいですか?

4 occurs in L at the following positions:  [0, 2, 6]
4

4 に答える 4

2

強制defaultdict投稿:

from collections import defaultdict

el = [4, 10, 4, 2, 9, 5, 4 ]
dd = defaultdict(list)
for idx, val in enumerate(el):
    dd[val].append(idx)

for key, val in dd.iteritems():
    print '{} occurs in el at the following positions {}'.format(key, val)

#9 occurs in el at the following positions [4]
#10 occurs in el at the following positions [1]
#4 occurs in el at the following positions [0, 2, 6]
#2 occurs in el at the following positions [3]
#5 occurs in el at the following positions [5]

次にdd、通常のdictを使用できます...dd[4]またはdd.get(99, "didn't appear")

于 2012-10-16T21:23:30.713 に答える
1

リスト内包表記を使用できます。

>>> L = [4, 10, 4, 2, 9, 5, 4]
>>> [i for i,x in enumerate(L) if x==4]
[0, 2, 6]

enumerate(L)の各要素のLタプルを生成するイテレータを提供します。したがって、ここで行っているのは、値()がに等しい場合に各インデックス()を取得し、それらからリストを作成することです。リストの長さを確認する必要はありません。(index, value)Lix4

于 2012-10-16T21:11:48.730 に答える
0

Counterリスト内の個別の要素をカウントし、リスト内包表記を使用して各要素のインデックスを見つけるために使用できます。-

>>> l = [4, 10, 4, 2, 9, 5, 4 ]
>>> from collections import Counter
>>> count = Counter(l)
>>> count
Counter({4: 3, 9: 1, 10: 1, 2: 1, 5: 1})

>>> lNew = [[(i,x) for i,x in enumerate(l) if x == cnt]  for cnt in count]
>>> 
>>> lNew[0]
[(4, 9)]
>>> lNew[1]
[(1, 10)]
>>> lNew[2]
[(0, 4), (2, 4), (6, 4)]
>>>  

実際、ここでは必要ありませんCounter。あなたはただ降りることができますSet

ファクトリ関数を使用してリストのセットを作成します:-set(l)そして、それを使用して同じことを行うことができます。

于 2012-10-16T21:16:16.760 に答える
0
def print_repeated_elements_positions(L):
    for e in set(L): # only cover distinct elements
        if L.count(e) > 1: #only those which appear more than once
            print(e, "occurs at", [i for i, e2 in enumerate(L) if e2 == e])


L = [4, 10, 4, 2, 9, 5, 4]
print_repeated_elements_positions(L)
# prints: 4 occurs at [0, 2, 6]
于 2012-10-16T21:18:51.407 に答える