相关疑难解决方法(0)

为什么"return list.sort()"返回None,而不是列表?

我已经能够验证findUniqueWords确实导致排序list.然而,它没有findUniqueWordslist,为什么呢?

def findUniqueWords(theList):
    newList = []
    words = []

    # Read a line at a time
    for item in theList:

        # Remove any punctuation from the line
        cleaned = cleanUp(item)

        # Split the line into separate words
        words = cleaned.split()

        # Evaluate each word
        for word in words:

            # Count each unique word
            if word not in newList:
                newList.append(word)

    answer = newList.sort()
    return answer
Run Code Online (Sandbox Code Playgroud)

python sorting return list

126
推荐指数
7
解决办法
11万
查看次数

列表上的Python sort()方法vs builtin sorted()函数

我知道__builtin__sorted()函数适用于任何可迭代的.但有人可以解释anylist.sort()与sorted(anylist)之间的巨大(10x)性能差异吗?另外,请指出我测量的方式是否有任何问题.

"""
Example Output:
$ python list_sort_timeit.py 
Using sort method: 20.0662879944
Using sorted builin method: 259.009809017
"""

import random
import timeit

print 'Using sort method:',
x = min(timeit.Timer("test_list1.sort()","import random;test_list1=random.sample(xrange(1000),1000)").repeat())
print x

print 'Using sorted builin method:',
x =  min(timeit.Timer("sorted(test_list2)","import random;test_list2=random.sample(xrange(1000),1000)").repeat())
print x


正如标题所说,我有兴趣比较list.sort()和sorted(list).上面的代码片段展示了一些有趣的东西,python的sort函数对于已排序的数据表现得非常好.正如Anurag所指出的那样,在第一种情况下,sort方法正在对已经排序的数据进行处理,而在第二种情况下,它正在处理新的工作,一次又一次地工作.

所以我写了这个测试,是的,他们非常接近.

"""
Example Output:
$ python list_sort_timeit.py 
Using sort method: 19.0166599751
Using sorted builin method: 23.203567028
"""

import random
import timeit

print 'Using sort method:',
x = min(timeit.Timer("test_list1.sort()","import random;test_list1=random.sample(xrange(1000),1000);test_list1.sort()").repeat())
print x

print 'Using sorted builin …

python sorting

33
推荐指数
3
解决办法
5万
查看次数

我可以强制python3的os.walk按字母顺序访问目录吗?怎么样?

我想知道是否可以在python3中强制os.walk按字母顺序访问目录.例如,这是一个目录和一些将遍历此目录的代码:

ryan:~/bktest$ ls -1 sample
CD01
CD02
CD03
CD04
CD05

--------

def main_work_subdirs(gl):
    for root, dirs, files in os.walk(gl['pwd']):
        if root == gl['pwd']:
            for d2i in dirs:
                print(d2i)
Run Code Online (Sandbox Code Playgroud)

当python代码点击上面的目录时,输出如下:

ryan:~/bktest$ ~/test.py sample
CD03
CD01
CD05
CD02
CD04
Run Code Online (Sandbox Code Playgroud)

我想强迫步行按字母顺序访问这些目录01, 02 ... 05.在python3 doc中os.walk,它说:

当topdown为True时,调用者可以就地修改dirnames列表(可能使用del或slice赋值),而walk()只会递归到名称保留在dirnames中的子目录中; 这可以用来修剪搜索,强加一个特定的访问顺序

这是否意味着我可以强加一个按字母顺序排列的访问顺序os.walk?如果是这样,怎么样?

os.walk python-3.x

25
推荐指数
2
解决办法
5072
查看次数

在python 3中对压缩对象进行排序

我有一个zip对象,我想对它进行排序(基于特定的键).

我已经看过如何在Python中对压缩列表进行排序?但是接受的答案在python 3.6中不起作用了.

例如

In [6]: a = [3,9,2,24,1,6]

In [7]: b = ['a','b','c','d','e']

In [8]: c = zip(a,b)

In [9]: c
Out[9]: <zip at 0x108f59ac8>

In [11]: type(c)
Out[11]: zip

In [12]: c.sort()
---------------------------------------------------------------------------
AttributeError                            Traceback (most recent call last)
<ipython-input-12-a21727fa8976> in <module>()
----> 1 c.sort()

AttributeError: 'zip' object has no attribute 'sort'

# Wanted this to be sorted by the first element
In [13]: for l,r in c: print(l,r)
3 a
9 b
2 …
Run Code Online (Sandbox Code Playgroud)

python sorting

7
推荐指数
2
解决办法
1万
查看次数

为什么列表操作不返回结果列表?

我对导致这种情况的思维过程感兴趣.对我来说,一个相对新手,似乎阻碍了,因为它阻止了列表处理的"链接"(例如mylist.reverse().append('a string')[:someLimit]).我想可能是"那些人的力量"决定列表理解是一个更好的范例(一个有效的观点),所以不想鼓励其他方法 - 但是这似乎有悖常理,以防止一种直观的方法,即使更好存在替代品.

请注意,我不是在抱怨(我敢肯定有一个合理的理由,我在它是什么只是感兴趣!),也不是寻找一个解决方案(意见在这里非常具有启发性) -只是寻找一些情况下,并深入理解语言的设计过程.

python

5
推荐指数
2
解决办法
320
查看次数

简单的 Python 问题:为什么我不能将变量分配给排序列表(就地)?

y = [1, 3, 2, 4]
x = y.sort()
print(x)
Run Code Online (Sandbox Code Playgroud)

x 是None。为什么这种语法适用于例如 Javascript 而不是 Python?

python

5
推荐指数
2
解决办法
770
查看次数

打印正在以相反的字母顺序打印所有字母而不是单词

我需要打印用户从命令行输入的单词列表。现在,字母顺序工作正常,但是当我反向打印时,输出顺序不正确。我尝试了很多事情,但现在想法不清了。任何人?这是代码:

import argparse

argparser = argparse.ArgumentParser()
argparser.add_argument("user_string", help = 'User string')
argparser.add_argument("--reverse", "-r", action="store_true", dest="reverseflag")
args = argparser.parse_args()
user_string = args.user_string
words_to_sort = user_string.split()
if len(words_to_sort) < 2:
        args.user_string
        # alerts user to input more than 1 word
        print("Invalid command line arguments to program. Please, supply two or more strings to sort.")

if len(words_to_sort) > 1 and (args.reverseflag == True):
        words_to_sort = sorted(args.user_string, reverse=True)
        print(*words_to_sort)
else:
        words_to_sort.sort()
        for word in words_to_sort:
            print(word)
Run Code Online (Sandbox Code Playgroud)

这是我从命令行得到的:

PS C:\Users\desktop\folder> python mysort.py --reverse "all mall …
Run Code Online (Sandbox Code Playgroud)

python

0
推荐指数
1
解决办法
67
查看次数

比较两个列表会返回 True,即使需要返回 False

我正在尝试编写一个程序来比较两个列表,如果它们都具有相同的变量,则返回“True”,否则返回“False”。

代码是:

def are_lists_equall(list1, list2):
    if len(list1) == len(list2) and list1.sort() == list2.sort():
        return True
    else:
        return False

list1 = [0.6, 1, 2, 3]
list2 = [9, 0, 5, 10.5]
print(are_lists_equall(list1, list2))
Run Code Online (Sandbox Code Playgroud)

输出是:

True
Run Code Online (Sandbox Code Playgroud)

为什么会发生这种情况?

python syntax-error

0
推荐指数
1
解决办法
713
查看次数

标签 统计

python ×7

sorting ×3

list ×1

os.walk ×1

python-3.x ×1

return ×1

syntax-error ×1