'for statement' 没有冒号
'for statement' without colon
test_keys = ["Rash", "Kil", "Varsha"]
test_values = [1, 4, 5]
# using dictionary comprehension
# to convert lists to dictionary
res = {test_keys[i]: test_values[i] for i in range(len(test_keys))}
# Printing resultant dictionary
print ("Resultant dictionary is : " + str(res))
在 'for statement' 之后应该有一个结束冒号“:”,就像 for i in range(3) :
但是这一行没有在 range()
的末尾放置“:”
res = {test_keys[i]: test_values[i] for i in range(len(test_keys))}
这完全不符合我所知道的语法,
这怎么可能?
也许它只是字典的语法?
您所描述的称为“字典理解”,它是创建可迭代对象的替代语法。
它经常派上用场。
类似于列表理解:
newlist = [expression for item in iterable if condition]
您可以使用集合、字典、列表和生成器来实现,分别称为集合、字典和列表理解或生成器表达式:
set_comprehension = {i for i in range(10)}
dict_comprehension = {i:i for i in range(10)}
list_comprehension = [i for i in range(10)]
generator_expression = (i for i in range(10))
print(set_comprehension)
print(dict_comprehension)
print(list_comprehension)
print(generator_expression)
输出:
{0, 1, 2, 3, 4, 5, 6, 7, 8, 9}
{0: 0, 1: 1, 2: 2, 3: 3, 4: 4, 5: 5, 6: 6, 7: 7, 8: 8, 9: 9}
[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
<generator object <genexpr> at 0x7fe9e8999dd0>
在python中,:
用于表示这一行我们输入了一个新的代码块(更深层次的缩进从下一行开始)。
例如:
if condition:
pass #Deeper indentation
for i in range(10):
pass #Deeper indentation
while True:
pass #Deeper indentation
#And many others
在列表理解中,所有内容都在同一行,因此 :
不是必需的,并且会导致问题,因为下一行没有更深的缩进。
test_keys = ["Rash", "Kil", "Varsha"]
test_values = [1, 4, 5]
# using dictionary comprehension
# to convert lists to dictionary
res = {test_keys[i]: test_values[i] for i in range(len(test_keys))}
# Printing resultant dictionary
print ("Resultant dictionary is : " + str(res))
在 'for statement' 之后应该有一个结束冒号“:”,就像 for i in range(3) :
但是这一行没有在 range()
的末尾放置“:”
res = {test_keys[i]: test_values[i] for i in range(len(test_keys))}
这完全不符合我所知道的语法,
这怎么可能?
也许它只是字典的语法?
您所描述的称为“字典理解”,它是创建可迭代对象的替代语法。
它经常派上用场。
类似于列表理解:
newlist = [expression for item in iterable if condition]
您可以使用集合、字典、列表和生成器来实现,分别称为集合、字典和列表理解或生成器表达式:
set_comprehension = {i for i in range(10)}
dict_comprehension = {i:i for i in range(10)}
list_comprehension = [i for i in range(10)]
generator_expression = (i for i in range(10))
print(set_comprehension)
print(dict_comprehension)
print(list_comprehension)
print(generator_expression)
输出:
{0, 1, 2, 3, 4, 5, 6, 7, 8, 9}
{0: 0, 1: 1, 2: 2, 3: 3, 4: 4, 5: 5, 6: 6, 7: 7, 8: 8, 9: 9}
[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
<generator object <genexpr> at 0x7fe9e8999dd0>
在python中,:
用于表示这一行我们输入了一个新的代码块(更深层次的缩进从下一行开始)。
例如:
if condition:
pass #Deeper indentation
for i in range(10):
pass #Deeper indentation
while True:
pass #Deeper indentation
#And many others
在列表理解中,所有内容都在同一行,因此 :
不是必需的,并且会导致问题,因为下一行没有更深的缩进。