for loop in c++ and python
for loop in c++ and python
我对python非常陌生。我有一个关于c++和python中for循环的小查询。在c,c++中,如果我们修改变量i
,如下例所示,i
的新值将反映在下一次迭代中,但在python中的for循环中情况并非如此。那么,当确实需要跳过一些迭代而不实际使用continue
等函数时,如何在python中处理它呢。
for loop in c++
for(int i=0;i<5;++i)
{
if(i==2)
i=i+2;
cout<<i<<endl;
}
Output
0
1
4
for loop in python
for i in range(5):
if i==2:
i=i+2
print i
Output
0
1
4
3
4
我通常建议不要修改C++中的迭代变量,因为这会使代码难以执行。
在python中,如果您事先知道要遍历哪些值(并且这些值不太多!),则可以构建这些值的列表。
for i in [0,1,4]:
print i
当然,如果您真的必须更改Python中的迭代变量,您可以使用while循环。
i = 0
while i < 5:
if i==2:
i=i+2
print i
i = i + 1
这是因为在python中,在循环的每次迭代中,变量i
都被选为range(5)
中的下一个元素。但是,在c++中,变量i
由循环增量、和(循环内部发生的东西)管理。
i
变量在循环的每次迭代中都被设置为range(5)
迭代器的输出。尽管您可以在循环中进行修改,但它会被覆盖。
i
在每次迭代中重置,这意味着在下一次循环中忽略对i的任何突变。正如Daniel Fischer在评论中所说,如果你想在Python中实现这一点,请使用while循环。
就像:
for (int i = 0; i < 5; ++i) {
int x = i;
if (x == 2) {
x = x + 2;
}
std::cout << x << std::endl;
}
这是因为range(5)
是[0,1,2,3,4]
,因此for i in range(5)
是for i in [0,1,2,3,4]
相关文章:
- 如何运行位于boost/libs/python/example/tutorial目录中的hello.cpp和Jamfil
- python ctypes and C++ pointers
- pybind11 both python 2.7 and 3.6
- Python ctypes and void const pointers
- Flask, boost::python and threads
- Python GIL and threads
- Python sprintf and memset operations
- Boost Python , python functions and ptrs
- Python C API and C++ functions
- Boost python and Mac Mavericks
- Opencv and Python
- Python lists and ctypes
- python and weierstrass function
- Boost.Python and Polymorphic Behaviour with std::shared_ptr
- mix VTK and SWIG Python
- PhysFS and Python embedding
- for loop in c++ and python
- boost python make_constructor and custodians and ward
- python sys.stdout and C++ iostreams::cout
- Boost.Python and Boost.Function