python - python中将一个列表中的每个相同元素分配给另一个列表上的相同索引的最佳方法是什么?

标签 python list

我考虑过将一个单词作为字符串,将其放入字符串的“regularList”中,生成一个“dummyList”,其中为中的每个字母包含一个字符串“-” word,然后循环遍历“regularList”,同时从“regularList”中删除我猜测的字母的每个实例,并将其重新分配给“dummyList”的相同索引。基本上,我需要做:

regularList = [['a', 'a', 'r', 'd', 'v', 'a', 'r', 'k']]
dummyList = ['_','_','_','_','_','_','_']

进入:

regularList = [['r', 'd', 'v', 'r', 'k']]
dummyList = ['a','a','_','_','_','a','_','_']

这是我的尝试:

word = 'aardvark'

def changeLetter(word):
    guess = raw_input('Guess a letter:') # When called, guess:a
    print word
    dummyList = []
    for i in word:
        dummyList.append('_ ')
    print dummyList
    regularList = [list(i) for i in word.split('\n')]
    print regularList
    numIters = 0
    while guess in regularList[0]:
        numIters += 1
        index = regularList[0].index(guess)
        dummyList[index] = guess
        del regularList[0][index]
    print regularList
    print dummyList
    print numIters


changeLetter(word)

这段代码产生:

Samuels-MacBook:python amonette$ python gametest.py
Guess a letter:a
aardvark
['_ ', '_ ', '_ ', '_ ', '_ ', '_ ', '_ ', '_ ']
[['a', 'a', 'r', 'd', 'v', 'a', 'r', 'k']]
[['r', 'd', 'v', 'r', 'k']]
['a', '_ ', '_ ', 'a', '_ ', '_ ', '_ ', '_ ']
3

正如您所看到的,正确的索引没有被重新分配。

最佳答案

word = 'aardvark'

def changeLetter(word):
    guess = raw_input('Guess a letter:') # When called, guess:a
    print word
    dummyList = []
    for i in word:
        dummyList.append('_ ')
    print dummyList
    regularList = [list(i) for i in word.split('\n')]
    print regularList
    numIters = 0
    position = 0
    length = len(regularList[0])
    while numIters < len(regularList[0]):
        if regularList[0][numIters] == guess:
            dummyList[position] = guess
            del regularList[0][numIters]
            numIters -=1
        position +=1
        numIters +=1
    print regularList
    print dummyList
    print numIters


changeLetter(word)

当你删除一个元素时,你的程序会出现一个错误,数组的大小会变小,而下一个元素会变成上一个元素。

常规列表[0] = ['a', 'a', 'r', 'd', 'v', 'a', 'r', 'k']

while guess in regularList[0]:

在此循环中,当您删除第一个 a 时,列表将变为 ['a', 'r', 'd', 'v', 'a', 'r', 'k']

现在,当循环继续时,猜测变为“r”,即前一个列表中的下一个元素。因此,先前位于位置 1 的 a 被忽略(基于 0 的索引)。

关于python - python中将一个列表中的每个相同元素分配给另一个列表上的相同索引的最佳方法是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37914565/

相关文章:

Python:删除非字母单词

Python 3.6 : New line command '/n' is ignored when writing to a file on AWS Ubuntu

c++ - 字符串与指针比较的问题

list - 嵌套列表平均值

python时区GMT转换

python - 有没有办法使用 'pattern' 来分解字符串

python - 对嵌套迭代的理解?

python - Go build不会从脾气暴躁的生成Go代码生成二进制文件吗?

python - Numpy 数组 : Extracting preferentially ordered values from array with Nans without padding?

python - 集成在客户端的轻量级网络服务器