这里发生了什么?循环循环和indice循环

时间:2018-01-05 19:27:09

标签: python

我试图获取一个字符串数组并将其转换为一个单独的单词数组(具有相同的列数)。但是这两个循环给了我非常不同的结果,这意味着我无法访问数组中的任何值。

set(COMMON_LIBS sb7 glfw X11 Xrandr Xinerama Xi Xxf86vm Xcursor GL rt dl)
                        ^ no 3

结果:

循环1(这是我想在第二个循环中表示的内容)

array1 = [
    ["yes is a good thing","no is a bad thing"],
    ["maybe is a good","certainly is a bad"]
]

w2, h2 = 2,15;
array2 = [[0 for x in range(w2)] for y in range(h2)]

for column in range(len(array1[0])): 
    for row in range(len(array1)):
        array2[1:][column] += str(array1[row][column]).split()

for line in array2: #LOOP 1
    print(line)

for column in range(len(array2[0])): #LOOP 2
    for row in range(len(array2)):
        print(array2[row][column])

循环2:

[0, 0]
[0, 0, 'yes', 'is', 'a', 'good', 'thing', 'maybe', 'is', 'a', 'good']
[0, 0, 'no', 'is', 'a', 'bad', 'thing', 'certainly', 'is', 'a', 'bad']
[0, 0]
[0, 0]
[0, 0]
[0, 0]
[0, 0]
[0, 0]
[0, 0]
[0, 0]
[0, 0]
[0, 0]
[0, 0]
[0, 0]

基本上我想要一个包含两列的数组,然后是每列的相关单独的单词。预期产出:

0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0

1 个答案:

答案 0 :(得分:1)

您可以直接从列生成输出:

array1 = [
    ["yes is a good thing", "no is a bad thing"],
    ["maybe is a good", "certainly is a bad"]
]

words = [[word for line in col for word in line.split()] for col in zip(*array1)]
transposed = list(zip(*words))

zip(*iterable) 转置矩阵,将列移至行,反之亦然。

演示:

>>> array1 = [
...     ["yes is a good thing", "no is a bad thing"],
...     ["maybe is a good", "certainly is a bad"]
... ]
>>> words = [[word for line in col for word in line.split()] for col in zip(*array1)]
>>> transposed = list(zip(*words))
>>> for row in transposed:
...     print('{:8} {:8}'.format(*row))
...
yes      no
is       is
a        a
good     bad
thing    thing
maybe    certainly
is       is
a        a
good     bad