Может кто-нибудь объяснить мне, что означает этот код - PullRequest
0 голосов
/ 11 октября 2019

объясните, пожалуйста, эту часть кода

rollNumber[:]=[items for items in rollNumber if items in sampleDict.values()]

Это полный код

rollNumber  = [47, 64, 69, 37, 76, 83, 95, 97]
sampleDict  ={'Jhon':47, 'Emma':69, 'Kelly':76, 'Jason':97} 

print("List -", rollNumber)
print("Dictionary - ", sampleDict)

rollNumber[:] = [item for item in rollNumber if item in sampleDict.values()]
print("after removing unwanted elemnts from list ", rollNumber)

Ответы [ 5 ]

0 голосов
/ 11 октября 2019

Несколько ответов объяснили правую часть задания, но никто не объяснил использование [:] в левой части.

Я ленив, поэтому я просто сделаю ссылку насуществующий ответ на этот вопрос: В чем разница между назначением срезов, которое разрезает весь список, и прямым назначением?

0 голосов
/ 11 октября 2019
rollNumber[:] = [item for item in rollNumber if item in sampleDict.values()]

Эта строка кода выполняет поэлементное сравнение между элементами списка rollNumber и значениями словаря sampleDict (не ключами, а значениями).

Если rollNumber[i] == sampleDict.values()[i], то это значение записывается в список rollNumber (называется заменой на месте), а если совпадение не найдено, то это значение не записывается ... следовательно, в конечном итоге вы получите только соответствующий наборзначений.

0 голосов
/ 11 октября 2019

Проще говоря, это сокращение для следующих кодов

tempRollNumber = []

for item in rollNumber:
    if item in sampleDict.values():
        tempRollNumber.append(item)

rollNumber = tempRollNumber
0 голосов
/ 11 октября 2019

Не уверен, что означает [:] для rollNumber [:]. Но эта строка кода здесь

[item for item in rollNumber if item in sampleDict.values()]

устанавливает переменную rollNumber равной списку вещей, в котором все элементы из rollNumber, которые соответствуют значению из sampleDict, находятся в новом списке.

Его можно расширить до этого блока, чтобы понять, что происходит.

temproll = []
for item in rollNumber:
    if item in sampleDict.values():
        temproll.append(item)
0 голосов
/ 11 октября 2019
rollNumber[:] = [item for item in rollNumber if item in sampleDict.values()]

Для каждого значения в цикле for, которое удовлетворяет условию if, добавляется в список rollNumber.

...