消除数组中的最后一个元素

时间:2015-11-16 16:05:02

标签: python arrays elements

所以我正在制作一个基于小型刽子手文本的游戏。

我目前正在处理的问题是从我的文本文件中调用随机单词。每个单词都有一个新行( \ n )的附加字符。

例如,通过我的函数将字符串的字母分隔成单个元素,我得到的结果是:

from text file: guess
answer = arrange_word(guess)
>>>>> ['g', 'u', 'e', 's', 's', '\n']

但是,当将阵列重新连接在一起时,会显示以下内容:

print ''.join(arrange_word)
>>>>> guess

正如您所看到的,猜测一个没有显示的元素有点困难。

为清楚起见,我的功能是 arrange_word

def arrange_word(word):
##########
# This collects the mystery word and breaks it into an array of
# individual letters.
##########
     word_length = len(word)
     break_up = ["" for x in range(word_length)]
     for i in range(0, word_length):
          break_up[i] = word[i]
     return break_up

我坚持认为,在尝试猜字母时, \ n 是无法猜测的。我的游戏的胜利条件是基于猜测与答案词相同。但是 \ n 会使其无法正常工作,因为它们的长度不同。

这些答案数组也有不同的长度,因为我只是从~1000字的文本文件中提取随机行。经过几个小时的搜索,我似乎无法找到如何删除数组的最后一个元素。

6 个答案:

答案 0 :(得分:3)

这一行:

word_length = len(word)

在你取长度之前,你能做的就是第一个:

word = word.strip()

说明:

strip删除了前导和尾随空格。

>>> s = "bob\n"
>>> s
'bob\n'
>>> s.strip()
'bob'

考虑到这一切,您不再 其余代码

 word_length = len(word)
 break_up = ["" for x in range(word_length)]
 for i in range(0, word_length):
      break_up[i] = word[i]

应用strip会给你一个没有空白字符的单词,然后你想要做的就是拥有一个字符列表,只需:

>>> s = "bob"
>>> list(s)
['b', 'o', 'b']

所以你的方法现在可以简单地:

def arrange_word(word):
    return list(word.strip())

演示:

arrange_word("guess")

输出:

['g', 'u', 'e', 's', 's']

答案 1 :(得分:1)

所有这些答案都适用于从字符串中专门删除空白字符,但更一般地说,Python列表实现了标准的堆栈/队列操作,您可以通过调用list()构造函数将您的单词转换为列表,而无需编写自己的函数:

In [38]: letters = list('guess\n')
         letters.pop()
         letters
Out[38]: ['g', 'u', 'e', 's', 's']

答案 2 :(得分:0)

使用列表切片

arr = [1,2,3,4]

print(arr[:-1:])

数组切片语法是[startindex:endindex:offset(2,表示每个2元素)]所以在你的情况下你可以。这意味着从列表的开始开始,到列表中每1个元素的最后一个元素-1。

return break_up[:-1:]

答案 3 :(得分:0)

你可以通过-1索引访问最后一个元素,如: 猜[-1] 你可以通过以下方式删除它:

del guess[-1] 

答案 4 :(得分:0)

只是删掉这个词:

word = 'guess\n'
word = word.strip()  ## 'guess' without new line character, or spaces

答案 5 :(得分:0)

也许你的arrange_word函数的第一行应该是

word = word.strip()

删除所有前导/尾随空白字符。