首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Python:将字符串操作为列表

Python:将字符串操作为列表
EN

Stack Overflow用户
提问于 2016-05-03 08:39:35
回答 1查看 84关注 0票数 0

问题:

我在我的在线课堂上有一个练习活动,它告诉我如何在8个不同的方向上操作字符串,并把它放在一个列表中。1.从左到右,2.从右到左,3.从上到左,4.从上到上,5.对角向左到右上,6.对角,右上至左,7.对角对角,右上至左上,8.对角,左上至右下。代码应该与给定文件的任何维度兼容。可以使用reverse方法。

任何帮助都将不胜感激。我是这方面的新手。

要操作的文本(在letters.txt文件中):

代码语言:javascript
复制
A B C D E F
G H I J K L
M N O P Q R 
S T U V W X
Y Z

预期输出:

代码语言:javascript
复制
leftToRight = ['ABCDEF', 'GHIJKL', 'MNOPQR', 'STUVWX', 'YZ']

rightToLeft = ['FEDCBA', 'LKJIHG', 'RQPONM', 'XWVUTS', 'ZY']

topToButtom = ['AGMSY', 'BHNTZ', 'CIOU', 'DJPV', 'EKQW', 'FLRX']

buttomToTop = ['YSMGA', 'ZTNHB', 'UOIC', 'VPJD', 'EKQW', 'FLRX']

bLeftToURight = ['A', 'GB', 'MHC', 'SNID', 'YTOJE', 'ZUPKF', 'VQL', 'WR', 'X']

uRightToBLeft = ['A', 'BG', 'CHM', 'DINS', 'EJOTY', 'FKPUZ', 'LQV', 'RW', 'X']

bRightToULeft = ['Y', 'ZS', 'TM', 'UNG', 'VOHA', 'WPIB', 'XQJC', 'RKD', 'LE', 'F']

uLeftToBRight = ['Y', 'SZ', 'MT', 'GNU', 'AHOV', 'BIPW', 'CJQX', 'DKR', 'EL', 'F']

到目前为止打开文件并从左向右尝试的代码:

代码语言:javascript
复制
leftToRight = []
openL = open("letters.txt")
letters = openL.read()
letters = letters.replace(" ","")
for line in letters:
    leftToRight.append(line.strip())
print(lefToRight)

打印:

代码语言:javascript
复制
['A', 'B', 'C', 'D', 'E', 'F', '', 'G', 'H', 'I', 'J', 'K', 'L', '', 'M', 'N', 'O', 'P', 'Q', 'R', '', 'S', 'T', 'U', 'V', 'W', 'X', '', 'Y', 'Z']

应该打印:

代码语言:javascript
复制
['ABCDEF', 'GHIJKL', 'MNOPQR', 'STUVWX', 'YZ']
EN

回答 1

Stack Overflow用户

发布于 2016-05-03 09:29:33

我会设置包含单个字符的two-dimensional array (用适当的默认(可能是0-字符)填充任何未占用的字段)。然后在这两种解释中迭代它(只使用伪代码,就像您刚才询问的那样):

代码语言:javascript
复制
from 0 to height:
    from 0 to width:
        # collect string
    # add it to LR array
    # add reverted string to RL array

类似的垂直,高度和宽度交替..。

对角线:

代码语言:javascript
复制
from h = 0 to max(height, width):
    from w = 0 to h:
       if h < height && w < width:
          # add matrix[h][w] to string
    #add string to list BLUR
    #add reverted string to URBL

from h = max(height, width) to 0:
    from w = h to max(height, width):
       if h < height && w < width:
          # add matrix[h][w] to string
    #add string to list ULBR
    #add reverted string to BRUL

编辑:根据评论和编辑:

您可能需要逐行阅读,请参阅here。而不是

代码语言:javascript
复制
print line;

你就会有

代码语言:javascript
复制
leftToRight.append(line.replace(" ", "").strip());

您可能希望获取此循环中的最大字符串长度,以便能够在第二次访问中填充默认值(或者检查所有字符串是否具有相同的长度)。

顺便说一句: leftToRight实际上已经是您的二维数组了,您可以直接使用它生成其余的: rightToLeft:只需反转所有字符串-垂直和对角线:如上所述。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/36999424

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档