在一行中使用python执行多行for循环

时间:2017-12-31 12:47:25

标签: python for-loop

我有一个附加到名为list1的新列表的循环并且它正在运行,但是如何添加更像print(x)或对list1.append(...)有用的内容?

word="abcdefg"
list1=[]
[list1.append(word[i]) for i in range(len(word))]
print(list1)

我已尝试使用list1.append(word[i]);print("working"),

3 个答案:

答案 0 :(得分:1)

正如我在评论中所说, List Comprehensions 不是只是用于在单行中执行for循环。它们非常强大,但你需要阅读它。您可以查看:Python List Comprehensions: Explained Visually

但是在这种特殊情况下,您的所有代码都是将字符串转换为列表并打印它。您可以在一行中执行以下操作:

>>> print(list("abcdefg"))
['a', 'b', 'c', 'd', 'e', 'f', 'g']

答案 1 :(得分:0)

你可以这么做 -

list1 = [word[i] for i in range(len(word))]

list1 = [w for w in word]

答案 2 :(得分:-1)

定义一个执行“更多代码行”并在理解中使用它的函数

word="abcdefg"
list1=[]
def add_and_print(character, container):
    container.append(character)
    print("adding", character)
[add_and_print(character, list1) for character in word]

理解应该是简短易读的,避免复杂的,一个条件一个调用,一个语句应该是最大的 - 如果你需要一个复杂的循环等,创建一个生成器

[call(something) for something in some_container if something == foo]