Python while循环返回第N个字母

标签 python python-3.x string list loops

我有一个字符串列表

X=['kmo','catlin','mept']

我试图编写一个循环,该循环将返回一个列表,其中包含每个单词的每 N 个字母的列表:

[['k','c','m'], ['m','a','e'],['o','t','p']]

但是我尝试的所有方法都只返回一个列表,其中包含在一个列表中连续返回的所有字母:

['k','m','o','c','a','t','l','i'.....'t'] 

这是我的代码的一个版本:

def letters(X):
    prefix=[]
    for i in X:
      j=0
      while j < len(i):
        while j < len(i):
          prefix.append(i[j])
          break
        j+=1
    return prefix

我知道我在每个单词中循环,但我不知道如何纠正它。

最佳答案

结果列表的长度似乎是由原始列表中最小字符串的长度决定的。如果确实如此,您可以简单地这样做:

X = ['kmo','catlin','mept']

l = len(min(X, key=len))

res = [[x[i] for x in X] for i in range(l)]

返回:

print(res)  # -> [['k', 'c', 'm'], ['m', 'a', 'e'], ['o', 't', 'p']]

或更简单(荣誉@JonClemens):

res = [list(el) for el in zip(*X)]

结果相同。请注意,这是有效的,因为一旦其中一个元素耗尽,zip 就会自动停止迭代。

<小时/>

如果您想填补空白,可以这么说,itertools 可以用它的 zip_longest 方法来支持您。请参阅this了解更多信息。 fillvalue 可以是您选择的任何值;这里用'-'来演示使用。对于生产代码来说,空字符串 '' 可能是更好的选择。

res = list(zip_longest(*X, fillvalue = '-'))
print(res)  # -> [('k', 'c', 'm'), ('m', 'a', 'e'), ('o', 't', 'p'), ('-', 'l', 't'), ('-', 'i', '-'), ('-', 'n', '-')]

关于Python while循环返回第N个字母,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59613810/

相关文章:

javascript - 在 Flask 服务器中自动重新加载 FTP 内容

python - 无法点击有问题的链接

python - 如何使用 2 个 pandas DataFrame 计算 IOU(重叠)

java - 当我尝试查找刚刚放入 HashMap 中的值时,为什么会出现运行时异常?

java - 如何在 Java 中的 JSON 字符串中在不知道确切键的情况下屏蔽特定值

python - 没有模型的 Django.contrib.flatpages

python - 从PDF中逐页提取文本以列表

python - 将 graphviz.dot.Digraph 转换为 networkx.Graph

python-3.x - Keras 模型适合 ValueError 预期 input_1 比我的数组大小大一个数字

Java字符串搜索忽略重音