假设我正在遍历一个可迭代对象,并且希望在迭代器为空时执行某些操作。我能想到的最好的两种方法是:
- 使用内置函数 `next()` 获取可迭代对象的首个元素并进行判断,如果没有元素则执行相应的操作。 - 将可迭代对象转换为列表,然后检查列表是否为空,如果为空则执行相应的操作。
请注意,这两种方法都有其优缺点,具体取决于您的要求和情况。
第一个方法依赖于可迭代对象是一个集合(因此当可迭代对象被传递到函数/方法中并在其中进行循环时无用),而第二个方法在每次循环通过设置“empty”来实现,这似乎很丑陋。
我是否漏掉了其他方法,还是第二种替代方案最好?如果有一些子句可以添加到循环语句中来处理这个问题,就像“else”使“not_found”标志消失一样,那将非常酷。
我不想要聪明的技巧。
我不想要涉及大量代码的解决方案。
我正在寻找一种简单的语言功能。我正在寻找一种清晰和Pythonic的方法来迭代可迭代对象,并在可迭代对象为空时执行某些操作,任何有经验的Python程序员都会理解。如果我可以在每次迭代时不设置标志就能实现,那就太好了。如果没有简单的习语可以做到这一点,那就算了。
- 使用内置函数 `next()` 获取可迭代对象的首个元素并进行判断,如果没有元素则执行相应的操作。 - 将可迭代对象转换为列表,然后检查列表是否为空,如果为空则执行相应的操作。
请注意,这两种方法都有其优缺点,具体取决于您的要求和情况。
for i in iterable:
# do_something
if not iterable:
# do_something_else
并且
empty = True
for i in iterable:
empty = False
# do_something
if empty:
# do_something_else
第一个方法依赖于可迭代对象是一个集合(因此当可迭代对象被传递到函数/方法中并在其中进行循环时无用),而第二个方法在每次循环通过设置“empty”来实现,这似乎很丑陋。
我是否漏掉了其他方法,还是第二种替代方案最好?如果有一些子句可以添加到循环语句中来处理这个问题,就像“else”使“not_found”标志消失一样,那将非常酷。
我不想要聪明的技巧。
我不想要涉及大量代码的解决方案。
我正在寻找一种简单的语言功能。我正在寻找一种清晰和Pythonic的方法来迭代可迭代对象,并在可迭代对象为空时执行某些操作,任何有经验的Python程序员都会理解。如果我可以在每次迭代时不设置标志就能实现,那就太好了。如果没有简单的习语可以做到这一点,那就算了。
a <= x < b
。 - Bolo