python - C 到 Python:For 循环
问题描述
所以我在 C 中有这段代码,它输出以下内容:
代码 :
scanf("%ld",&N);
long long A[N];
for(i=1;i<=N;i++)
scanf("%lld", &A[i]);
for(i=1;i<N;i++)
for(j=i;j<=N-1;j++) {
printf("%d %d\n", A[i], A[j+1]);
输入 :
5
1 2 3 4 5
输出 :
1 2
1 3
1 4
1 5
2 3
2 4
2 5
3 4
3 5
4 5
如何使用 python 3.7.x 获得相同的输出?
试过:
A = [1,2,3,4,5]
for i in range(len(A)):
for j in range(len(A)):
try:
print(A[i],A[j+1])
except IndexError:
pass
尝试输出:
1 2
1 3
1 4
1 5
2 2
2 3
2 4
2 5
3 2
3 3
3 4
3 5
4 2
4 3
4 4
4 5
5 2
5 3
5 4
5 5
这是我得到的输出,它只是遍历每个循环,将值打印出来,然后得到重复的对。
感谢您的帮助,谢谢!
解决方案
这不是这样做的方式:
- try / except块很昂贵,实际上这里不需要它们
- 这种形式的for不是Python ic
您应该尝试尽可能接近地复制C循环。为此,[Python 3. Docs]: Built-in Functions - enumerate ( iterable, start=0 )派上用场(允许处理元素索引)。此外,还使用了序列切片。
>>> a = [1, 2, 3, 4, 5] >>> >>> for idx0, elem0 in enumerate(a): ... for elem1 in a[idx0 + 1:]: ... print(f"{elem0} {elem1}") ... 1 2 1 3 1 4 1 5 2 3 2 4 2 5 3 4 3 5 4 5
推荐阅读
- mariadb - ProxySQL 给我错误 Access denied for user
- android - Android Studio 在名称上给我一个错误,说它必须是 log.v 中的“throwable tr”。有人可以解释一下为什么
- arrays - 如何在arduino的char数组中放置变量?
- visual-studio - 用于编辑和继续的 Visual Studio 快捷键:暂停、(编译)然后再次运行
- vue.js - 样式化 vuetify 组件 v-expansion-panel__header
- bash - 如何仅在文件中保存 15 秒后的命令输出?
- android - 使用 Unity 在 ARCore 中移动游戏对象的锚点
- python - 想使用beautifulsoup从标签中获取文本,尝试了所有方法但没有工作
- apache-spark - 广播哈希联接不适用于 Spark SQL 中的完全联接?
- html - 如果通过 ejs 发送到函数,重要数据在 html 页面源中可见