将 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 循环多重赋值)的主要内容,如果未能解决你的问题,请参考以下文章

从未见过 C++ for 循环

如何将python for循环从顺序转换为并行运行

python for和while循环杂记

在 Python 中将列表理解转换为 For 循环

c++ 多重继承强制转换

将python字典翻译成C++