Python FOR循环的语法无效
有人能解释一下为什么这一行给了我一个错误吗Python FOR循环的语法无效,python,arrays,python-3.x,list,Python,Arrays,Python 3.x,List,有人能解释一下为什么这一行给了我一个错误吗 ['foo', 'foo_{}'.format(s) for s in range(0,5)] 但当我喜欢这些时,它会正常工作: ['foo_{}'.format(s) for s in range(0,5)] 甚至 ['foo', ['foo_{}'.format(s) for s in range(0,5)]] 当我这样做时,它会给我内存分配: ['foo', ('foo_{}'.format(s) for s in range(0,5))]
['foo', 'foo_{}'.format(s) for s in range(0,5)]
但当我喜欢这些时,它会正常工作:
['foo_{}'.format(s) for s in range(0,5)]
甚至
['foo', ['foo_{}'.format(s) for s in range(0,5)]]
当我这样做时,它会给我内存分配:
['foo', ('foo_{}'.format(s) for s in range(0,5))]
我正在学习Python,是个新手,我很好奇
为什么在我尝试这行代码时,它会生成“无效语法”
['foo', 'foo_{}'.format(s) for s in range(0,5)]
是否有另一种方法可以输出
Output: ['foo','foo_0','foo_1','foo_2','foo_3','foo_4']
无需手动执行代码
干杯 使用:
[('foo', 'foo_{}'.format(s)) for s in range(0,5)]
我怀疑这是因为Python看到了['foo',foo{}.format(s)
,并认为它只是一个列表。然后它看到了的,并突然感到困惑
如果将'foo',foo{}.格式
括在括号中,则会消除歧义。使用:
[('foo', 'foo_{}'.format(s)) for s in range(0,5)]
我怀疑这是因为Python看到了['foo',foo{}.format(s)
,并认为它只是一个列表。然后它看到了的,并突然感到困惑
如果将'foo',foo{}格式
括在括号中,则会消除歧义。c
中b的表达式a不允许在a
中使用隐式元组
(逗号分隔的表达式不包含在括号中)。这迫使您明确选择逗号的组合形式:
[('foo', 'foo_{}'.format(s)) for s in range(0,5)]
# [('foo', 'foo_0'), ('foo', 'foo_1'), ('foo', 'foo_2'), ('foo', 'foo_3'), ('foo', 'foo_4')]
['foo', ('foo_{}'.format(s) for s in range(0,5))]
# ['foo', <generator object <genexpr> at 0x7fc2d41daca8>]
[('foo',foo_{}.格式)用于范围(0,5)内的s]
#[('foo','foo_0'),('foo','foo_1'),('foo','foo_2'),('foo','foo_3'),('foo','foo_4')]
['foo',('foo_{}.范围(0,5)内s的格式]
#[foo',]
c
中b的表达式a不允许在a
中使用隐式tuple
(逗号分隔的表达式不包含在括号中)。这迫使您明确选择逗号的确切组合:
[('foo', 'foo_{}'.format(s)) for s in range(0,5)]
# [('foo', 'foo_0'), ('foo', 'foo_1'), ('foo', 'foo_2'), ('foo', 'foo_3'), ('foo', 'foo_4')]
['foo', ('foo_{}'.format(s) for s in range(0,5))]
# ['foo', <generator object <genexpr> at 0x7fc2d41daca8>]
[('foo',foo_{}.格式)用于范围(0,5)内的s]
#[('foo','foo_0'),('foo','foo_1'),('foo','foo_2'),('foo','foo_3'),('foo','foo_4')]
['foo',('foo_{}.范围(0,5)内s的格式]
#[foo',]
上面的实现是列表理解。您可以在这里查看详细信息
但是,通过这样做:['foo',foo{}.范围(0,5)中s的格式]
您正在破坏列表理解实现,实际上您正在定义一个列表,其第一个成员是'foo'
,另一个成员是'foo{}。范围(0,5)中s的格式
由于第二个成员既不是正确的列表元素,也不是列表理解,因此发生语法错误
上面的实现是列表理解。您可以在这里查看详细信息
但是,通过这样做:['foo',foo{}.范围(0,5)中s的格式]
您正在破坏列表理解实现,实际上您正在定义一个列表,其第一个成员是'foo'
,另一个成员是'foo{}。范围(0,5)中s的格式
由于第二个成员既不是正确的列表元素,也不是列表理解,因此发生语法错误['foo']+['foo_{}'。范围(0,5)]内的s的格式是我想要的use@Skirrebattie感谢您的替代方式!['foo']+['foo_{}'。范围(0,5)内的s的格式这就是我想要的use@Skirrebattie谢谢你的选择!谢谢你的答案和来源。这非常有帮助。我认为我应该对此进行进一步的研究。再次感谢!谢谢你的答案和来源。这非常有帮助。我认为我应该对此进行进一步的研究。再次感谢!谢谢!我真的非常感谢你答:谢谢!我真的很感激你的回答:D