-2
students=[['Ash',85.25],['Kai',85.25],['Ray',75],['Jay',55.5]]
output:Ash
Kai
私は、タスクを解決しようとしていると私は誰もが1はそれを
を行うことができますどのように私を説明することができますしたいものを得ていないのですpython.Iに新たなんだ
students=[['Ash',85.25],['Kai',85.25],['Ray',75],['Jay',55.5]]
output:Ash
Kai
私は、タスクを解決しようとしていると私は誰もが1はそれを
を行うことができますどのように私を説明することができますしたいものを得ていないのですpython.Iに新たなんだ
1つのオプションは、defaultdict(list)
にグループ化する値のようになります。
>>> from collections import defaultdict
>>>
>>> students = [['Ash',85.25],['Kai',85.25],['Ray',75],['Jay',55.5]]
>>> d = defaultdict(list)
>>> for value, key in students:
... d[key].append(value)
...
>>> for value in d.itervalues():
... if len(value) > 1:
... print(value)
...
['Ash', 'Kai']
私はそのようにそれを行うだろう:
students = [['Ash', 85.25], ['Kai', 85.25], ['Ray', 75], ['Jay', 55.5]]
common_names = []
for i, i_x in enumerate(students):
for i_y in students[:i] + students[i + 1:]:
if i_x[1] == i_y[1]:
common_names.append(i_x[0])
print(common_names)
#['Ash', 'Kai']
# or if you want it to print every entry in a single line:
print('\n'.join(x for x in common_names))
#Ash
#kai
説明:
students
からオブジェクトを取得します。オブジェクトは、例えば、最初の繰り返しでとその['Ash', 85.25]
です。[1]
インデックスを持つ、新しく作成されたリストにあるかどうかをチェックしstudents[:i] + students[i + 1:]
をスライス値はの値です。はいの場合は、結果を保持する3番目のリストにi_x[0]
の値を追加します。students
のリストにある数の要素に対して行います。誰もが上記のためのリストの内包表記を提供することはできますか?
O(n^2)(n-squared)の複雑さではありませんか?ありがとう。 – alecxe
@alecxeなぜ、これは理解できないのですか?x [1]ならx(学生[:i] +学生[i + 1:]) == y [1]]) 'は動作しません.. –