将 C++ 转换为 Python(For 循环多重赋值)
Posted
技术标签:
【中文标题】将 C++ 转换为 Python(For 循环多重赋值)【英文标题】:Convert C++ to Python (For Loop multiple assignment) 【发布时间】:2010-01-29 08:02:05 【问题描述】:转换成python:
#include <iostream>
using namespace std;
int main(int argc, char** argv)
for (int i = 0, j = i + 3; i < 100; ++i, j= i+3)
cout << i << " j: " << j << endl;
getchar();
return 0;
我试试:
for i in range(99):
j = i + 3
print i, " j: ", j
如何让它成为一个for循环?
【问题讨论】:
我的意思是我想让python程序只有2行,就像C++一样 像 0ne python FOR LOOP 一样为 l00p d03s 做 C++ 的工作 在我看来它已经像一个循环了。你看到几个? 哇,如果这个用例是更真实的世界,那将是真正的真实世界 C++ 远不止两行。并且认为代码更好是因为行数更少的想法是错误的。 【参考方案1】:只需将 99 改为 100
for i in range(100):
j = i + 3
print i, " j: ", j
或者
for i,j in [(i, i+3) for i in range(100)]:
【讨论】:
@jleedev:我打字的时候你的帖子不在那里。那么为什么要投反对票呢? 如果我这样做的话,我会使用生成器表达式而不是列表推导式。【参考方案2】:除了循环中的上限(98 对 99)之外,这些都是相同的。什么问题?
一行(但请不要这样做):
for i,j in [(i, i+3) for i in range(100)]:
【讨论】:
【参考方案3】:由于j
始终依赖于i
的值,您不妨将j
的所有实例替换为i + 3
。
【讨论】:
【参考方案4】:我不明白,它 是 那里正是一条蟒蛇for loop
。问题是什么?你想要像 c++ 中的循环声明中的 j
声明吗?检查 Prasson 的答案以获得最接近的 python 等价物。但是为什么首先要有一个 j 变量呢? j=i+3
似乎总是正确的,为什么不这样呢?
for i in range(100):
print i, " j: ", i+3
【讨论】:
【参考方案5】:for (i,j) in zip(range(100), range(3, 100+3)):
【讨论】:
【参考方案6】:for i in range(100):
j = i + 3
print i, "j:", j
raw_input()
C++:http://ideone.com/7Kdmk
Python:http://ideone.com/nATEP
【讨论】:
以上是关于将 C++ 转换为 Python(For 循环多重赋值)的主要内容,如果未能解决你的问题,请参考以下文章