Python列表没有通过? def main(): 优胜者=[] winnersND=[] readData() 无重复(获奖者) def readData(): winners\u file=open('WorldSeriesWinners.txt','r') winners=winners\u file.readlines() winners_file.close() 索引=0 而指数

Python列表没有通过? def main(): 优胜者=[] winnersND=[] readData() 无重复(获奖者) def readData(): winners\u file=open('WorldSeriesWinners.txt','r') winners=winners\u file.readlines() winners_file.close() 索引=0 而指数,python,list,tuples,unique,Python,List,Tuples,Unique,所以我到处寻找,我花了七个小时的代码迭代来实现这一点,但出于某种原因,赢家列表会在readData()中打印出来,但是winnersND列表,一个独特且有序的赢家列表元素列表,不会打印出来,而是显示输出:[]。我想澄清一下我在这里搞砸了什么。谢谢大家! 试试看 def main(): winners = [] winnersND = [] readData() noDuplicates(winners) def readData(): winne

所以我到处寻找,我花了七个小时的代码迭代来实现这一点,但出于某种原因,赢家列表会在
readData()
中打印出来,但是
winnersND
列表,一个独特且有序的赢家列表元素列表,不会打印出来,而是显示输出:
[]
。我想澄清一下我在这里搞砸了什么。谢谢大家!

试试看

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()
noDuplicates()函数中,
这是一个空白列表,这就是为什么您会得到一个空白列表,因为从空白列表中获取数据

您试图访问在
main()
中分配的
winners
,但在
readData()
函数中对其进行了更改,当您试图访问该函数外部的
winners
时,将显示一个空白列表

试试这个:-

print winners 
或者将
readData()
返回值存储在变量中,以便:-

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
然后对
循环应用

data = readData()

因为
winners
main
是一个空列表。在
readData()
中重新分配一个名为
winners
的变量并返回它,但不捕获返回值。因此,
main
继续将一个空的
winners
列表传递给
noDuplicates()

尝试将
main
更改为:

for x in data:
   .
   .
你的问题在这里:

def main():
    winners = readData()
    winnersND = noDuplicates(winners)
这一切都可以这样做

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))

所以我就这么做了,而且成功了!谢谢:)但是现在,我得到了两份获奖者和获奖者名单的打印件。为什么?这取决于你的代码。听起来你可能在
main
中留下了一些以前的内容,而不是用我发布的内容替换。非常感谢你,我继续尝试运行你在“这一切都可以这样做”之后写的内容,但是,如果我只是尝试在main中打印获奖者,则会显示整个列表,不是唯一元素的有序列表。唯一元素位于
winnersND
中。您的初始代码中没有任何排序,因此我不知道您打算如何对其进行排序。刚刚从第一篇文章中看到您的编辑,它工作得很好,非常感谢:)您知道我最简单的方法是什么来计算每个独特元素在获奖者列表中的显示数量,winnersND列表元素左侧是?谢谢您的输入!我试过了,但还没有成功:(我在摆弄它。@Zach它对我很好,你应该再试一次,如果有错误的话就显示出来。@down voter请告诉我我在这种方法中的错误,我会很感激,并试着给出相应的答案。你可以否决一篇请求帮助的帖子?这有什么意义XD
from collections import Counter
for winner, count in Counter(winners).iteritems():
    print '{0} has won {1} times'.format(winner, count)