python - 使用 indeces 迭代元组列表理解
问题描述
我正在尝试使用 indeces 迭代列表理解元组来引用每个元组及其相关长度,然后打印出元组列表中的每个元素,但 python 不接受这一点。我是 Comp sci 专业的,但大约 10 年前,我们学习了 C++ 和 Java,所以对 python 还是很陌生:
q = 0
productResourcePairs = [(x, y) for x in [1,2,3] for y in [3,1,4]]
for p in productResourcePairs:
for i in range(len(productResourcePairs(p))):
print(productResourcePairs[q][i])
q = q + 1
我只是想获取每个元组的长度,然后使用 [][] 打印出它的对应值,然后移动到下一个元组。
Python 抛出以下错误:
Traceback(最近一次调用最后一次):for i in range(len(productResourcePairs(p))): TypeError: 'list' object is not callable
它现在正在工作,只需注意修复程序就会关闭它,并且底部调用对元组产生相同的结果:
for p in productResourcePairs:
for i in range(len(p)):
print(p[i])
print(productResourcePairs[q][i])
q = q + 1
解决方案
()
是呼叫操作员,因此productResourcePairs(p)
尝试呼叫您的列表 - 这是没有意义的,因为列表不可调用。productResourcePairs[p]
正在尝试获取p
列表索引处的元素-但这里p
是 a tuple
,而不是 an int
,并且您显然不能用元组索引列表。
现在我不确定您要做什么,但是如果目标是打印列表中每个元组的每个元素,那么您会使事情变得比必须的复杂得多:
productResourcePairs = [(x, y) for x in [1,2,3] for y in [3,1,4]]
for p in productResourcePairs:
for item in p:
print(item)
我建议您完成完整的官方 Python 教程,它涵盖了所有这些要点。
编辑:
如果您绝对坚持使用索引访问,即使它既不符合 Python 标准、无用复杂且效率低得多(对于上述用例),您当然仍然可以这样做:
productResourcePairs = [(x, y) for x in [1,2,3] for y in [3,1,4]]
for p in productResourcePairs:
plen = len(p)
for i in range(plen):
print(item[i])
或者如果你想做得更糟:
productResourcePairs = [(x, y) for x in [1,2,3] for y in [3,1,4]]
llen = len(productResourcePairs)
for i in range(llen):
plen = len(productResourcePairs[i])
for j in range(plen):
print(productResourcePairs[i][j])
请注意,任何实验过的 Python 用户如果在他们正在处理的代码库中找到这个代码,他们会立即用我的第一个代码段替换这个代码。
推荐阅读
- python - 如何使 JSON 对象字段像 SQLAlchemy 模型中的普通数据库列一样?
- python - Python Selenium:我想点击一个按钮。代码运行良好,但尚未单击按钮
- python - 如何使用正则表达式删除列中的单词
- excel - 根据行的类别将行移动到另一个工作表
- tensorflow - 如何将cnn模型的预测结果保存为json格式?
- javascript - 如何将 Javascript 导出的类转换为 Kotlin/JS?
- spring-cloud - 更改spring cloud gateway中调用的实际URL
- php - 为什么 PHPMailer 无法连接到我的 SMTP 服务器
- python - FileNotFoundError,但文件确实存在
- node.js - 为什么 nodejs async-await 在与 api 调用配对时会返回随机顺序?