Python:遍历列表中的列以查找回文

2024-09-29 01:19:10 发布

您现在位置:Python中文网/ 问答频道 /正文

这里我有一个单词表:

[['r', 'o', 't', 'o', 'r'], ['e', 'v', 'e', 'i', 'a'], ['f', 'i', 'n', 'e', 'd'], ['e', 'n', 'e', 't', 'a'], ['r', 'a', 't', 'e', 'r']]

我必须显示这个列表中的所有回文,它们是行还是列。 我已经编写了代码来查找行中的所有回文。但无法实现在列中查找回文的方法。在

以下是我目前为止的代码:

^{pr2}$

将显示输出:

rotor is a palindrome starting at [0][0] and is a row in the table

其中“rotor”是回文。在

我需要一种方法来获取列中的回文: “参考”,“特尼特”,“雷达”

任何帮助都是非常感谢的。提前谢谢!在


Tags: andthe方法代码in列表istable
3条回答

我看到你不想使用Zip(我建议使用):

备选答案:

list_ = [['r', 'o', 't', 'o', 'r'], ['e', 'v', 'e', 'i', 'a'], ['f', 'i', 'n', 'e', 'd'], ['e', 'n', 'e', 't', 'a'], ['r', 'a', 't', 'e', 'r']]

您可以通过使用反转列表[::-1]检查每个列表来获取回文(行):

^{pr2}$

然后用1得到回文(列)。使用list comprehension和2创建列列表(下面称为list_2)。原则同上:

list_2 = [[i[ind] for i in list_] for ind in range(len(list_))]
[i==i[::-1] for i in list_2]
# prints [True, False, True, False, True]

更新

如果你想直接得到答案,你可以:

[i for i in list_ if i==i[::-1]] 
# prints [['r', 'o', 't', 'o', 'r']]
# and list_2: [['r', 'e', 'f', 'e', 'r'],['t', 'e', 'n', 'e', 't'],['r', 'a', 'd', 'a', 'r']]

您可以使用^{}来转换列表:

>>> t = [['r', 'o', 't', 'o', 'r'], ['e', 'v', 'e', 'i', 'a'], ['f', 'i', 'n', 'e', 'd'], ['e', 'n', 'e', 't', 'a'], ['r', 'a', 't', 'e', 'r']]
[['r', 'o', 't', 'o', 'r'], ['e', 'v', 'e', 'i', 'a'], ['f', 'i', 'n', 'e', 'd'], ['e', 'n', 'e', 't', 'a'], ['r', 'a', 't', 'e', 'r']]
>>> list(zip(*t))
[('r', 'e', 'f', 'e', 'r'), ('o', 'v', 'i', 'n', 'a'), ('t', 'e', 'n', 'e', 't'), ('o', 'i', 'e', 't', 'e'), ('r', 'a', 'd', 'a', 'r')]

列现在是行,可以应用与以前相同的方法。如果您只需要单词,可以使用列表理解:

^{pr2}$

这将完成以下工作:

palindrome=[['r', 'o', 't', 'o', 'r'], ['e', 'v', 'e', 'i', 'a'], ['f', 'i', 'n', 'e', 'd'], ['e', 'n', 'e', 't', 'a'], ['r', 'a', 't', 'e', 'r']]
n=len(palindrome)
for col in range(len(palindrome[0])):
    col_word=[palindrome[i][col] for i in range(n)]
    if ''.join(col_word)==''.join(reversed(col_word)):
        result=''.join(col_word)+" is a palindrome starting at ["+str(col)+"] and is a col in the table"
        print(result)

这个指纹

^{pr2}$

基本上,为了访问列中的单词,您可以

col_word=[palindrome[i][col] for i in range(n)] 

这将修复列并迭代行。其余代码的结构与您的类似。在

相关问题 更多 >