Python 显示一个不同于该调试的数组

Python 显示一个不同于该调试的数组,python,Python,这个概念很简单。我想创建一个26乘26的列表,并用字母表填充它。除了每次我都要向右移动一个字母 例如: A、 B,C,E,F,G Z、 A,B,C,E,F,G Y、 Z,A,B,C,E,F,G 我做了这个代码,它可以工作,但它在最后显示了基本的字母表。看起来数组已压缩为基本字母表 alphabet=["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"

这个概念很简单。我想创建一个26乘26的列表,并用字母表填充它。除了每次我都要向右移动一个字母

例如:

  • A、 B,C,E,F,G
  • Z、 A,B,C,E,F,G
  • Y、 Z,A,B,C,E,F,G 我做了这个代码,它可以工作,但它在最后显示了基本的字母表。看起来数组已压缩为基本字母表

    alphabet=["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"]
    import numpy as np
    Tableau=np.empty((26,26),dtype='<U1')
    
    for k in range(len(alphabet)):
        for i in range(len(alphabet)):
            if i + k >= len(alphabet):
                i += k - len(alphabet)
            else:
                i += k
    
            Tableau[k][i] = alphabet[i]
            print(Tableau[k][i])
            print(alphabet[i], "\n")
    
    字母表=[“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”] 将numpy作为np导入 Tableau=np.empty((26,26),dtype= 它使用了一些技巧。首先,列表理解来生成2D数组。您不需要
    numpy
    。其次,它使用模运算、
    chr()
    ord()

    这将为您提供一个包含每行的数组:

    `[0,1,2,...]`
    
    
    `Matrix = [[(x-y) for x in range(26)] for y in range(26)]`
    
    对每行进行移位,但超出0-26范围

    `[
    [0,1,2,...]
    [-1,0,1,2,...]
    [-2,-1,0,1,2,...]
    ...
    ]`
    
    `Matrix = [[((x-y)%26) for x in range(26)] for y in range(26)]`
    
    使用mod 26,我们将数字输入到0-25范围

    现在只是把0-25变成a-Z的问题

    内置的
    chr()
    ord()
    可以帮助您实现这一点

    它使用了一些技巧。首先,列表理解来生成2D数组。您不需要
    numpy
    。其次,它使用模运算、
    chr()
    ord()

    这将为您提供一个包含每行的数组:

    `[0,1,2,...]`
    
    
    `Matrix = [[(x-y) for x in range(26)] for y in range(26)]`
    
    对每行进行移位,但超出0-26范围

    `[
    [0,1,2,...]
    [-1,0,1,2,...]
    [-2,-1,0,1,2,...]
    ...
    ]`
    
    `Matrix = [[((x-y)%26) for x in range(26)] for y in range(26)]`
    
    使用mod 26,我们将数字输入到0-25范围

    现在只是把0-25变成a-Z的问题


    内置的
    chr()
    ord()
    可以帮助您做到这一点。

    您已经考虑过了,这里不需要使用numpy。 要移动字母,只需获取最新的字母,将其从列表中删除并添加到前面,例如:

    alphabet=["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"]
    final_result = []
    for i in range(len(alphabet)):
        el = alphabet[-1] # Get the first letter
        alphabet.pop() # Remove the latest letter
        alphabet = [el] + alphabet # Update the list, setting the first letter as the latest
        final_result.append(alphabet) # Append to the list containing the rotated alphabet
    

    请注意:还有其他方法可以解决此问题,只是演示了一种可读性强且易于理解的方法。

    您考虑过了,这里不需要使用numpy。 要移动字母,只需获取最新的字母,将其从列表中删除并添加到前面,例如:

    alphabet=["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"]
    final_result = []
    for i in range(len(alphabet)):
        el = alphabet[-1] # Get the first letter
        alphabet.pop() # Remove the latest letter
        alphabet = [el] + alphabet # Update the list, setting the first letter as the latest
        final_result.append(alphabet) # Append to the list containing the rotated alphabet
    

    请注意:还有其他方法可以解决此问题,只是演示了一种可读性强且易于理解的方法。

    此问题可能比您提出的问题更简单:

    import numpy as np
    
    ALPHABET = list("ABCDEFGHIJKLMNOPQRSTUVWXYZ")
    
    LENGTH = len(ALPHABET)
    
    tableau = np.empty((LENGTH, LENGTH), dtype='<U1')
    
    for i in range(LENGTH):
        for j in range(LENGTH):
            k = (j - i) % LENGTH
    
            tableau[i][j] = ALPHABET[k]
    
    print(tableau)
    
    将numpy导入为np
    字母表=列表(“abcdefghijklmnopqrstuvxyz”)
    长度=长度(字母表)
    
    tableau=np.empty((LENGTH,LENGTH),dtype='这个问题可能比您所做的要简单:

    import numpy as np
    
    ALPHABET = list("ABCDEFGHIJKLMNOPQRSTUVWXYZ")
    
    LENGTH = len(ALPHABET)
    
    tableau = np.empty((LENGTH, LENGTH), dtype='<U1')
    
    for i in range(LENGTH):
        for j in range(LENGTH):
            k = (j - i) % LENGTH
    
            tableau[i][j] = ALPHABET[k]
    
    print(tableau)
    
    将numpy导入为np
    字母表=列表(“abcdefghijklmnopqrstuvxyz”)
    长度=长度(字母表)
    tableau=np.empty((LENGTH,LENGTH),dtype='A有一个rotate方法;将列表变成一个deque;将deque(作为列表)附加到最终列表中;rotate;重复25次

    import collections
    alphabet=["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"]
    alphabet = collections.deque(alphabet)
    final = []
    for _ in range(26):
        final.append(list(alphabet))
        alphabet.rotate()
    
    A有一个旋转方法;将您的列表转换为deque;将deque(作为列表)附加到最终列表中;旋转;重复25次

    import collections
    alphabet=["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"]
    alphabet = collections.deque(alphabet)
    final = []
    for _ in range(26):
        final.append(list(alphabet))
        alphabet.rotate()
    

    基本字母表是什么意思?基本字母表是什么意思?这打印的输出与OP显示的类似,但实际目标是,“创建一个26乘26的列表,并用字母表填充。”此解决方案不保留该描述的数据结构。打印输出类似于OP显示的内容,但实际目标是“创建一个26乘26的列表,并用字母表填充。”此解决方案不保留该描述的数据结构。