打印([[i + j for i in“abc”] for j in“def”])

时间:2016-09-07 14:54:52

标签: python list-comprehension

我是Python的新手。

我难以理解其中一种理解

list = []
list2 = []

for j in 'def':
    for i in 'abc':
        list.append(i+j)
    list2 = list
print (list)

你能帮我转换for循环中的理解吗?

我没有通过for循环获得所需的结果:

([[‘ad’, ‘bd’, ‘cd’], [‘ae’, ‘be’, ‘ce’], [‘af’, ‘bf’, ‘cf’]])

以上是我用for循环的尝试。我错过了什么。下面应该是我想要的for循环的理想结果。

l = list(1, "sunflower", 3) for(i in seq_along(l)) { this.e = l[[i]] test <- try(this.e + 1, silent=TRUE) calc <- if(class(test) %in% 'try-error') {next} else {this.e + 1} print(calc) } [1] 2 [1] 4

我认为这是一个矩阵。

提前致谢。

3 个答案:

答案 0 :(得分:3)

解开这样一种理解的最简单方法是一次理解它并将 写成循环。所以:

[[i+j for i in "abc"] for j in "def"]

变为:

outer_list = []
for j in "def":
    outer_list.append([i + j for i in "abc"])

好吧,很酷。现在我们已经摆脱了外在的理解,所以我们可以解开下面的内心理解:

outer_list = []
for j in "def":
    inner_list = []
    for i in "abc":
        inner_list.append(i + j)
    outer_list.append(inner_list)

答案 1 :(得分:1)

对于这种理解的循环将如下所示

result = []
for j in "def":
    r = []
    for i in "abc":
        r.append(i+j)
    result.append(r)

答案 2 :(得分:1)

a = 'abc'
b = 'def'

>>> [[x+y for x in a]for y in b]
[['ad', 'bd', 'cd'], ['ae', 'be', 'ce'], ['af', 'bf', 'cf']]

循环

>>> for y in b:
...     for x in a:
...         print x+y,
... 
ad bd cd ae be ce af bf cf