假设我有一个工作清单:['a','b','c']和索引列表[2,1,0],它会将工作清单更改为:['c','b','a "]
是否有任何python方法可以轻松完成此任务(工作列表也可能是一个numpy数组,因此更适合使用更具适应性的方法)?谢谢!
在下面的简单示例中,有两个函数可以对随机数列表进行排序.第一种方法传递sorted生成器表达式,第二种方法首先创建一个列表:
import random
l = [int(1000*random.random()) for i in xrange(10*6)]
def sort_with_generator():
return sorted(a for a in l)
def sort_with_list():
return sorted([a for a in l])
Run Code Online (Sandbox Code Playgroud)
使用行分析器进行基准测试表明第二个选项(sort_with_list)的速度大约是生成器表达式的两倍.
任何人都可以解释发生了什么,为什么第一种方法比第二种方法慢得多?
我在 Windows 机器上工作,想检查网络路径上的目录是否为空。
想到的第一件事是调用os.listdir()并查看它的长度是否为 0。
IE
def dir_empty(dir_path):
return len(os.listdir(dir_path)) == 0
Run Code Online (Sandbox Code Playgroud)
因为这是一个网络路径,我的连接并不总是很好,而且一个文件夹可能包含数千个文件,所以这是一个非常慢的解决方案。有没有更好的?
为什么这段代码运行良好并且不抛出异常?
def myzip(*args):
iters = [iter(arg) for arg in args]
try:
while True:
yield tuple([next(it) for it in iters])
except StopIteration:
return
for x, y, z in myzip([1, 2], [3, 4], [5, 6]):
print(x, y, z)
Run Code Online (Sandbox Code Playgroud)
但如果这条线
yield tuple([next(it) for it in iters])
Run Code Online (Sandbox Code Playgroud)
替换为
yield tuple(next(it) for it in iters)
Run Code Online (Sandbox Code Playgroud)
然后一切都停止工作并抛出RuntimeError?
我有一个元组列表,如下所示:
>>>myList
[(), (), ('',), ('c', 'e'), ('ca', 'ea'), ('d',), ('do',), ('dog', 'ear', 'eat', 'cat', 'car'), ('dogs', 'cars', 'done', 'eats', 'cats', 'ears'), ('don',)]
Run Code Online (Sandbox Code Playgroud)
我想这样读:
>>>myList
[('',), ('c', 'e'), ('ca', 'ea'), ('d',), ('do',), ('dog', 'ear', 'eat', 'cat', 'car'), ('dogs', 'cars', 'done', 'eats', 'cats', 'ears'), ('don',)]
Run Code Online (Sandbox Code Playgroud)
即我想()从列表中删除空元组.在这样做时我想保留元组('',).我似乎无法找到从列表中删除这些空元组的方法.
我已经尝试myList.remove(())并使用for循环来执行此操作,但要么不起作用,要么我的语法错误.任何帮助,将不胜感激.
我有一个3元素的python元组,我正在尝试使用3元素列表的索引进行排序或重新排列,我想知道最简洁的方法是什么.
到目前为止我有:
my_tuple = (10, 20, 30)
new_positions = [2, 0, 1]
my_shuffled_tuple = my_tuple[new_positions[0]], my_tuple[new_positions[1]], my_tuple[new_positions[2]]
# outputs: (30, 10, 20)
Run Code Online (Sandbox Code Playgroud)
如果我这样做,我也得到相同的结果:
my_shuffled_tuple = tuple([my_tuple[i] for i in new_positions])
Run Code Online (Sandbox Code Playgroud)
是否有更简洁的创作方式my_shuffled_tuple?
有人可以向我解释一下这一行吗
set(o for o in self.intersect if self.past_dict[o] != self.current_dict[o])
Run Code Online (Sandbox Code Playgroud)
我是 Python 新手,从未见过任何类似于“o for o”的编程语言,并且无法找到任何参考来理解这意味着什么。
谢谢。
我为这个问题编写代码:
没有下义词的名词同义词集的百分比是多少?您可以使用 wn.all_synsets('n') 获取所有名词同义词集。
这是我的代码:
import nltk
from nltk.corpus import wordnet as wn
all_noun = wn.all_synsets('n')
print(all_noun)
print(wn.all_synsets('n'))
all_num = len(set(all_noun))
noun_have_hypon = [word for word in wn.all_synsets('n') if len(word.hyponyms()) >= 1]
noun_have_num = len(noun_have_hypon)
print('There are %d nouns, and %d nouns without hyponyms, the percentage is %f' %
(all_num, noun_have_num, (all_num-noun_have_num)/all_num*100))
Run Code Online (Sandbox Code Playgroud)
当我运行这段代码时,输出是
<generator object all_synsets at 0x10927b1b0>
<generator object all_synsets at 0x10e6f0bd0>有名词 82115 个,无下位词名词 16693 个,百分比为 79.671193
但如果改变
noun_have_hypon = [word for word in wn.all_synsets('n') if len(word.hyponyms()) >= …
我想根据另一个键的条件(例如Gender == 'male')来总结此字典列表中所有人的年龄:
list_of_dicts= [
{"Name": "Ethan", "Gender": "male", "Age": 11},
{"Name": "Nathan", "Gender": "male", "Age": 6},
{"Name": "Sophie", "Gender": "female", "Age": 14},
{"Name": "Patrick", "Gender": "male", "Age": 11}
]
Run Code Online (Sandbox Code Playgroud)
下面的代码完成了它,但我想知道是否有更Pythonic/紧凑的方法来做到这一点?也许类似于字典列表的 SQL 查询?
total_male_age = 0
for dict in list_of_dicts:
if dict.get("Gender") == "male":
total_male_age = total_male_age + dict.get("Age")
#total_male_age = 28
Run Code Online (Sandbox Code Playgroud) 我不明白这个语法是如何工作的,也找不到关于它的文档:
word = '123xyz567'
s = ''.join (c if c.isdigit() else ' 'for c in word)
Run Code Online (Sandbox Code Playgroud)
代码的第 2 行将采用 xyz123 并"123 567"通过传入一个要连接的 lambda 函数将它们连接成一个字符串
但是,我对这种语法的工作方式感到困惑,通常是一个 python if-else 语句:
def example():
for c in word:
if c.isdigit():
return c
else:
return ' '
Run Code Online (Sandbox Code Playgroud)
有人可以解释或指导我查看向我解释传入的 lambda 函数的语法结构.join()以及我如何正确使用它的文档吗?
python ×10
generator ×2
list ×2
tuples ×2
dictionary ×1
directory ×1
function ×1
json ×1
nlp ×1
nltk ×1
numpy ×1
path ×1
performance ×1
python-2.7 ×1
python-3.x ×1
python-zip ×1
wordnet ×1