有没有办法将列表理解重写为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