Python 创建矩阵

Python 创建矩阵,python,class,dictionary,vector,matrix,Python,Class,Dictionary,Vector,Matrix,我想让我的程序将25个字母作为输入,并将它们放入某种列表中,这样我就可以制定规则,确定哪些字母可以连接到另一个字母,然后从中得到三个不重叠的单词 我所做的是: def matris(): matris = [[],[],[],[],[]] counter = 0 counter2 = 0 counter3 = 0 counter4 = 0 counter5 = 0 while counter !=5: matris[0].

我想让我的程序将25个字母作为输入,并将它们放入某种列表中,这样我就可以制定规则,确定哪些字母可以连接到另一个字母,然后从中得到三个不重叠的单词

我所做的是:

def matris():
    matris = [[],[],[],[],[]]
    counter = 0
    counter2 = 0
    counter3 = 0
    counter4 = 0
    counter5 = 0

    while counter !=5:
        matris[0].append(raw_input('One letter: '))
        counter+=1

    while counter2 !=5:
        matris[1].append(raw_input('One letter: '))
        counter2+=1

    while counter3 !=5:
        matris[2].append(raw_input('One letter: '))
        counter3+=1

    while counter4 !=5:
        matris[2].append(raw_input('One letter: '))
        counter4+=1

    while counter5 !=5:
        matris[4].append(raw_input('One letter: '))
        counter5+=1

    return matris
例如,当我运行这个程序时,它会要求我输入“一个字母”*25,这可以生成一个类似以下内容的矩阵:

matris = [['a', 'g', 'i', 't', 'u']
          ['s', 'r', 'g', 's', 'm']
          ['f', 'e', 'd', 'c', 't']
          ['r', 's', 'i', 'f', 'x']
          ['t', 'i', 't', 't', 'i']]
如果有人有更好的方法来做这件事,我会感谢你分享它。还有一种方法,它将与我想要的程序一起工作,我不确定我是否能够与我的版本一起工作

我有一个dictionary.txt,我制作了如下内容: dictionary=open('dictionary.txt','r')

所以我想我会试着开始匹配
matris[0][0]+matris[0][1]
,看看是否有一个单词以i.e
'a'+'g'
开头,然后取下一个字母,依此类推,直到找到三个最好(最有价值)的单词

我猜我需要一门课。我已经走了这么远:

Class hypotes:
  def __init__ (self, usedPosiiton, word):
  self.u = usedPosition
  self.w = word
  positions = []
  bestWords = [] # There should be maximum three words in this list, 
                 # the words with highest score
我认为我必须将位置保存在一个数组中,以便以后我可以确保最好的单词不会使用相同的字母

我想我在这门课上需要一些帮助

letterValuePoints = {'A':50,  'B':110, 'C':190, 'D':70,  'E':50,  'F':90, 
                     'G':70,  'H':70,  'I':50,  'J':170, 'K':70,  'L':50,
                     'M':70,  'N':50,  'O':70,  'P':110, 'R':50,  'S':50, 
                     'T':50,  'U':110, 'V':90,  'X':190, 'Y':170, 'Z':210, 
                     'Å':110, 'Ä':90,  'Ö':110}

后来我想,当我给每个字母一个值时,我会这样做,但我不知道这是否是一个好方法?

我想我不明白这个问题。 不过,这里有一些片段可以让您开始学习

只需一次性阅读25个字母,然后使用分区生成器,如前所述 使用
split
将其发送到下面的生成器

def chunks(l, n):
    """ Yield successive n-sized chunks from l.
    """
    for i in xrange(0, len(l), n):
        yield l[i:i+n]

import pprint
a=raw_input('some letters: ')
some letters: 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

pprint.pprint(list(chunks(a.split(), 5)))
[['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']]
如果您希望进行近似匹配,请查看


在此之后,我想您需要澄清一下您的问题:-)

您好,谢谢您的快速回复!=)这非常漂亮:import pprint def chunks(l,n):“从l.中连续生成n个大小的chunks”,用于xrange(0,len(l),n)中的i:Yield l[i:i+n]a=raw_input('一些字母:')pprint.pprint(列表(chunks(a.split(),5)))但必须有一种方法将其拆分并作为列表返回,其中包含这些列表?现在只是把信打印出来?看起来真的很糟糕,也许我应该改一下我的问题=/Såg att du var svensk!=)Går inte att skicka pm här va?你是说,你是不是在看一本书?Försöker Fåkar igenom listan som nu består av 5 listor med 5 bokstäver i varje,och Försöka hitta ord matchas med en ordlista.txt。Såjag tänkte att man kanske ska börja leta påplats lista[0][0]och lista[0][1]och se om något ord i ordlistan börjar påde bokstäverna och det gör det fort Sätta med lista[0][2]och fortsätta tills en boksa nåtaa n match nåmer m,sen göra samma provess men börstav[1]…我的第一个朋友是我的朋友,我的朋友是我的朋友你的兽医是谁?他是谁?你认为这是什么原因?这是我的最爱。拉嘎·蒂尔瓦特·蒂尔瓦特·蒂尔瓦特·蒂尔瓦特·蒂尔瓦特·蒂尔瓦特·蒂尔瓦特·蒂尔瓦特·蒂尔瓦特·蒂尔瓦特·蒂尔瓦特·蒂尔瓦特·蒂尔瓦特·斯瓦尔(Sam för ditt svar!):)/BobSjälva returneringen löste jag genom att göra en ny funktion som return(列表(chunks(a.split(),5)))pådet som raw_input tar in:)
>>> get_close_matches('appel', ['ape', 'apple', 'peach', 'puppy'])
['apple', 'ape']
>>> import keyword
>>> get_close_matches('wheel', keyword.kwlist)
['while']
>>> get_close_matches('apple', keyword.kwlist)
[]
>>> get_close_matches('accept', keyword.kwlist)
['except']

[[0, 1, 2, 3, 4, 5, 6, 7, 8, 9],
 [10, 11, 12, 13, 14, 15, 16, 17, 18, 19],
 [20, 21, 22, 23, 24, 25, 26, 27, 28, 29],
 [30, 31, 32, 33, 34, 35, 36, 37, 38, 39],
 [40, 41, 42, 43, 44, 45, 46, 47, 48, 49],
 [50, 51, 52, 53, 54, 55, 56, 57, 58, 59],
 [60, 61, 62, 63, 64, 65, 66, 67, 68, 69],
 [70, 71, 72, 73, 74]]