Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/300.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python FOR循环的语法无效_Python_Arrays_Python 3.x_List - Fatal编程技术网

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