foo = ['123','123','123]
我正在尝试将foo
变为:
revisedfoo = ['111', '222', '333']
这实际上是将“行”变为“列”:
111
222
333
我尝试过以下几点:
for j in range(len(foo)):
for i in range(len(foo)):
revisedfoo.append(foo[i][j])
但它离开了我:
revisedfoo = ['1','1','1','2','2','2','3','3','3']
任何帮助将不胜感激!
答案 0 :(得分:4)
使用zip()
和星号运算符:
>>> [''.join(i) for i in zip(*foo)]
['111', '222', '333']
zip(*foo)
"unzips" foo,例如:
>>> x = [1, 2, 3]
>>> y = [4, 5, 6]
>>> zipped = zip(x, y)
>>> list(zipped)
[(1, 4), (2, 5), (3, 6)]
>>> x2, y2 = zip(*zip(x, y))
>>> x == list(x2) and y == list(y2)
True
所以在这种情况下:
# You need to call `list()`, because `zip()` returns
# an iterator in Python 3.x
>>> list(zip(*foo))
[('1', '1', '1'), ('2', '2', '2'), ('3', '3', '3')]
然后,在每个子元素(元组)上,我们希望将各个元素连接成一个字符串。 ''.join(seq)
是解决此问题的标准方法。