我已经能够验证findUniqueWords确实导致排序list.然而,它没有findUniqueWords了list,为什么呢?
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) 我知道__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
所以我写了这个测试,是的,他们非常接近.
"""
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 … 我想知道是否可以在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?如果是这样,怎么样?
我有一个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) 我对导致这种情况的思维过程感兴趣.对我来说,一个相对新手,似乎阻碍了,因为它阻止了列表处理的"链接"(例如mylist.reverse().append('a string')[:someLimit]).我想可能是"那些人的力量"决定列表理解是一个更好的范例(一个有效的观点),所以不想鼓励其他方法 - 但是这似乎有悖常理,以防止一种直观的方法,即使更好存在替代品.
请注意,我不是在抱怨(我敢肯定有是一个合理的理由,我在它是什么只是感兴趣!),也不是寻找一个解决方案(意见在这里非常具有启发性) -只是寻找一些情况下,并深入理解语言的设计过程.
y = [1, 3, 2, 4]
x = y.sort()
print(x)
Run Code Online (Sandbox Code Playgroud)
x 是None。为什么这种语法适用于例如 Javascript 而不是 Python?
我需要打印用户从命令行输入的单词列表。现在,字母顺序工作正常,但是当我反向打印时,输出顺序不正确。我尝试了很多事情,但现在想法不清了。任何人?这是代码:
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) 我正在尝试编写一个程序来比较两个列表,如果它们都具有相同的变量,则返回“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)
为什么会发生这种情况?