Python列表没有通过?

2024-09-28 23:51:28 发布

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

def main():

    winners = []
    winnersND = []

    readData()
    noDuplicates(winners)


def readData():

    winners_file = open('WorldSeriesWinners.txt', 'r')

    winners = winners_file.readlines()

    winners_file.close()

    index = 0
    while index < len(winners):
            winners[index] = winners[index].rstrip('\n')
            index += 1

    print(winners)
    print()
    print()

    return winners


def noDuplicates(winners):

    winnersND = []

    for x in winners:
            if x not in winnersND:
                    winnersND.append(x)

    print (winnersND)

    winnersND = tuple(winnersND)

    return winnersND

main()

所以我到处找,我花了7个小时的代码迭代试图让这个工作,但是出于某种原因,优胜者列表被打印在readData(),但是winnersND列表,一个唯一的和有序的优胜者列表元素的列表,没有被打印出来,而是显示输出:[]。我很想弄清楚我在搞什么鬼。谢谢您!你知道吗


Tags: in列表indexreturnmaindefopenfile
3条回答

试试看

print winners 

noDuplicates()函数中, 这是一个空白列表,这就是为什么你得到一个空白列表,因为从空白列表中获取数据。你知道吗

您试图访问在main()中分配的winners,但在readData()函数中更改了它,当您试图访问该函数外的winners时,它将显示一个空列表。你知道吗

试试看本文件:你知道吗

def noDuplicates(winners):  
    winnersND = []
    for x in readData(): #  use readData() instead winners
        if x not in winnersND:
            winnersND.append(x)

    print (winnersND)   
    winnersND = tuple(winnersND)
    return winnersND

或者将readData()返回值存储在变量中即:你知道吗

data = readData()

然后应用for循环

for x in data:
   .
   .

您的问题是:

winners = readData() # you need to return the list here...
noDuplicates(winners) # otherwise it's empty here.

这一切都可以这样做。你知道吗

def main():
    winners = [x.rstrip() for x in open('WorldSeriesWinners.txt').readlines()]
    winnersND = list(set(winners))

既然你在评论中问了,这就是你可以检查每个队赢了多少次的方法。你知道吗

from collections import Counter
for winner, count in Counter(winners).iteritems():
    print '{0} has won {1} times'.format(winner, count)

因为winnersmain是一个空列表。在readData()中重新分配一个名为winners的变量并返回它,但不捕获返回值。所以main继续向noDuplicates()传递一个空的winners列表。你知道吗

尝试将main更改为:

def main():
    winners = readData()
    winnersND = noDuplicates(winners)

相关问题 更多 >