我有一个test_cases包含类对象的列表.每个对象都有一个名为的属性ident.我想迭代列表中的所有对象,并在值下执行某些操作ident
这是我的代码:
class TestCase:
def __init__(self, title, ident, description):
self.title = title
self.ident = ident
self.description = description
test_cases = []
test_cases.append(TestCase(**tc_dict)
i = 0
while i != len(test_cases):
print test_cases[i].ident
i += 1
Run Code Online (Sandbox Code Playgroud)
它工作正常,但我想问,如果有更多'pythonic'的方式来做到这一点.
使用for循环直接迭代对象(而不是迭代它们的索引):
for test_case in test_cases:
print test_case.ident
Run Code Online (Sandbox Code Playgroud)
这是通用方法,当您想循环遍历对象时,应该使用99%的时间.它在这里工作得很好,可能是理想的解决方案.
如果您确实需要索引,则应使用enumerate():
for index, test_case in enumerate(test_cases):
print index, test_case.ident
Run Code Online (Sandbox Code Playgroud)
它仍在循环遍历对象,但它同时从中接收索引enumerate.
在您的特定用例中,还有另一种选择.如果你有很多对象,那么逐个打印它们可能会很慢(调用print相当昂贵).如果性能成为一个问题,您可以使用str.join预先连接值,然后将它们全部打印一次:
print '\n'.join(tc.ident for tc in test_cases)
Run Code Online (Sandbox Code Playgroud)
我个人推荐第一种方法,当你需要打印很多东西并且实际上可以用肉眼看到性能问题时,只会参考后者.
| 归档时间: |
|
| 查看次数: |
5465 次 |
| 最近记录: |