有没有办法将列表理解重写为for循环?
我有这样的一行代码:
list1=[string1[i:i+int1] for i in range(0, len(string1), int1)]
我记得我的老师说我们应该在有'for'的时候开始新行,那么有没有办法编写这样的代码:
for i in range(0, len(string1), int1):
#something here
或者是其他东西?
你的意思是从list-comprehension
提取一个无聊的旧规则for loop
?
list1=[string1[i:i+int1] for i in range(0, len(string1), int1)]
变为:
list1 = list()
for i in range(0, len(string1), int1):
list1.append(string1[i:i+int1])
如果您想在遍历数据时添加异常处理,日志记录或更复杂的函数或行为,这将非常有用。
例如:
list1 = list()
for i in range(0, len(string1), int1):
log.info('in loop: i={}'.format(i))
try:
data = string1[i:i+int1]
except:
log.error('oh no!')
# maybe do something complex here to get some data anyway?
data = complex_function(i)
log.debug('appending to list: data={}'.format(data))
list1.append(data)
但一般来说,列表理解是一个完全合法的写法。
您必须先创建空列表,然后追加每次迭代。
list1 = []
for i in range(0, len(string1), int1):
list1.append(string1[i:i+int1])
该列表理解将转化为:
l = []
for i in range(0, len(string1), int1):
l.append(string1[i:i+int1])
链接地址: http://www.djcxy.com/p/31697.html
上一篇: Is there a way to rewrite a list comprehension as a for loop?
下一篇: Time performance in Generating very large text file in Python