【问题标题】:Separating a list of strings into columns将字符串列表分成列
【发布时间】:2017-02-08 02:21:43
【问题描述】:
import textwrap  

def get_coord(x,matrix):

    code = 'ADFGVX'  
    for i in range(len(matrix)):  
        for a in range(len(matrix[i])):  
            if matrix[i][a] == x:  
                return code[i] + code[a]  
    return -1, -1  

def encode(message, secret_alphabet, keyword):

    message = ''.join(message.split()).lower()   
    matrix = [secret_alphabet[i * 6:(i+1) * 6] for i in range(6)]  
    first = ''  
    lk = len(keyword)  
    for i in message:  
        first += get_coord(i, matrix)  
    first = textwrap.wrap(first, lk)    

encode("I am going", 
       "dhxmu4p3j6aoibzv9w1n70qkfslyc8tr5e2g",
       "cipher")

我有一个字符串列表,我需要将它们压缩在一起以创建列。我使用textwrap 创建了这个列表:

在 texwrapping 之后我得到:

['FADVAG', 'XXDXFA', 'GDXX']

我需要我的输出看起来像:

['FXG', 'AXD', 'DDX', 'VXX', 'AF', 'GX']

我该如何做到这一点?

【问题讨论】:

  • 你需要包含一些代码以及你是如何到达第一个数组的。
  • 'DDD' 是错字,应该是'DDX'

标签: python string list python-3.6


【解决方案1】:

itertools.zip_longeststr.join 的一种方法:

>>> from itertools import zip_longest
>>> [''.join(item) for item in zip_longest('FADVAG', 'XXDXFA', 'GDXX', fillvalue='')]
['FXG', 'AXD', 'DDX', 'VXX', 'AF', 'GA']

但是,这不会产生您想要的第三个也是最后一个项目。这是原帖的错误吗?

【讨论】:

  • 不知道为什么'GA' 会在所需列表中消失:)。奇怪的是,'AX' 从某个地方出现。
  • 很抱歉我打字不好,我已经写了几个小时了哈哈,不过谢谢,我会试一试
  • 有什么办法可以将列表传递给 zip_longest 并获得所需的输出?
  • @ChaseEllis 你可以使用解包zip_longest(*your_list, fillvalue='')(注意前面的* 解包列表)。
猜你喜欢
  • 2012-05-23
  • 2020-03-28
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-08-20
  • 1970-01-01
  • 2012-07-22
  • 2019-04-16
相关资源
最近更新 更多