请解释这段代码
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)
答案 0 :(得分:0)
rollNumber[:] = [item for item in rollNumber if item in sampleDict.values()]
对于满足if条件的for循环中的每个值,都将其添加到列表rollNumber中。
答案 1 :(得分:0)
简而言之,它是遵循以下代码的简写
tempRollNumber = []
for item in rollNumber:
if item in sampleDict.values():
tempRollNumber.append(item)
rollNumber = tempRollNumber
答案 2 :(得分:0)
不确定[:]对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)
答案 3 :(得分:0)
rollNumber[:] = [item for item in rollNumber if item in sampleDict.values()]
这行代码在列表rollNumber和sampleDict字典的值(不是键,而是值)之间进行逐元素比较。
如果rollNumber[i] == sampleDict.values()[i]
,则将该值写入rollNumber列表中(称为“就地替换”),如果未找到匹配项,则不写入该值...因此最终您只能得到匹配的一组值。
答案 4 :(得分:0)
几个答案已解释了作业的右侧,但没有人解释了[:]
在左侧的用法。
我很懒,所以我将链接到该问题的现有答案:What is the difference between slice assignment that slices the whole list and direct assignment?