草庐IT

Pythonic

全部标签

python - 生成一系列字符的 pythonic 方式是什么?

在其他语言中,我会使用这样的结构:a..z我想不出比这更好的解决方案:[chr(x)forxinrange(ord("a"),ord("z")+1)]是否有更短、更易读的方法来构建这样的列表? 最佳答案 如果你想做a到z以外的事情,不一定很好,但你可以这样做:fromstringimportascii_lowercaseforcinascii_lowercase:printc 关于python-生成一系列字符的pythonic方式是什么?,我们在StackOverflow上找到一个类似的

python - 有没有一种 pythonic 方法来支持 Python 中的 memoize 装饰器的关键字参数?

所以我最近问了一个关于记忆化的问题并得到了一些很好的答案,现在我想把它提升到一个新的水平。经过相当多的谷歌搜索后,我找不到能够缓存采用关键字参数的函数的memoize装饰器的引用实现。事实上,他们中的大多数人只是简单地使用了*args。作为缓存查找的键,这意味着如果你想记住一个接受列表或字典作为参数的函数,它也会中断。在我的例子中,函数的第一个参数本身就是一个唯一标识符,适合用作缓存查找的字典键,但是我希望能够使用关键字参数并仍然访问相同的缓存。我的意思是,my_func('unique_id',10)和my_func(foo=10,func_id='unique_id')应该都返回相

numpy 中轴向赢家通吃的 pythonic 方式

我想知道在将所有其他元素设置为零的同时仅保留2Dnumpy数组每一行中的最大元素的最简洁和pythonic方法是什么。示例:给定以下numpy数组:a=[[1,8,3,6],[5,5,60,1],[63,9,9,23]]我想要的答案是:b=[[0,8,0,0],[0,0,60,0],[63,0,0,0]]我可以想出几种方法来解决这个问题,但我感兴趣的是是否有python函数可以快速解决这个问题提前致谢 最佳答案 您可以使用np.max沿一个轴取最大值,然后使用np.where将非最大元素归零:np.where(a==a.max(ax

从 numpy 数组中删除元素的 pythonic 方法

这个问题在这里已经有了答案:Howtoremovespecificelementsinanumpyarray(12个答案)关闭7年前。如果你有array=np.array([1,2,3,4])并且你有index=np.array([0,1,2])并且您想删除数组中的索引元素,没有循环的最佳方法是什么?

while 循环的 Pythonic 枚举

Python有一种优雅的方法可以在for循环中自动生成计数器变量:enumerate函数。这节省了初始化和递增计数器变量的需要。计数器变量也很难看,因为它们通常在循环结束后就没用了,但它们的范围不是循环的范围,所以它们不需要占用命名空间(虽然我不确定enumerate是否真的解决了这个问题)。我的问题是,对于while循环是否有类似的pythonic解决方案。enumerate不适用于while循环,因为enumerate返回一个迭代器。理想情况下,解决方案应该是“pythonic”的,不需要函数定义。例如:x=0c=0whilex在这种情况下,我们希望避免初始化和递增c。澄清:这可以

python - 如何以某种 pythonic 方式将列表中的所有字符串截断为相同长度?

假设我们有一个列表,例如:g=["123456789123456789123456","1234567894678945678978998879879898798797","6546546564656565656565655656565655656"]我需要每个元素的前十二个字符:["123456789123","123456789467","654654656465"]好的,我可以在for循环中构建第二个列表,如下所示:g2=[]foreleming:g2.append(elem[:12])但我很确定还有更好的方法,但现在还想不出来。有什么想法吗? 最佳答

list - 将列表元素与其索引相关联的 Pythonic 方式

我有一个值列表,我想将它们放入一个字典中,该字典将每个值映射到它的索引。我可以这样做:>>>t=(5,6,7)>>>d=dict(zip(t,range(len(t))))>>>d{5:0,6:1,7:2}这还不错,但我正在寻找更优雅的东西。我遇到了以下情况,但它与我需要的相反:>>>d=dict(enumerate(t))>>>d{0:5,1:6,2:7}请分享您的解决方案,谢谢编辑:Python2.6.4对于包含1000个元素的列表,dict(zip)版本是最快的,生成器和列表推导版本实际上是相同的,它们慢了大约1.5倍,而函数映射(反向)要慢得多。$python-mtimeit-

python - 排除以特定字符开头的列表元素的最pythonic方法是什么?

我有一个字符串列表。我想获得一个新列表,在保留顺序的同时排除以“#”开头的元素。对此最pythonic的方法是什么?(最好不要使用循环?) 最佳答案 [xforxinmy_listifnotx.startswith('#')]这是最符合Python风格的做法。任何执行此操作的方法最终都将使用Python或C中的循环。 关于python-排除以特定字符开头的列表元素的最pythonic方法是什么?,我们在StackOverflow上找到一个类似的问题: http

混合两个列表的 Pythonic 方式

这个问题在这里已经有了答案:Pythonicwaytocombine(interleave,interlace,intertwine)twolistsinanalternatingfashion?(25个答案)关闭4个月前。我有两个长度为n和n+1的列表:[a_1,a_2,...,a_n][b_1,b_2,...,b_(n+1)]我想要一个函数作为结果给出一个列表,其中包含两个交替元素,即[b_1,a_1,...,b_n,a_n,b_(n+1)]以下是可行的,但看起来并不聪明:deflist_mixing(list_long,list_short):list_res=[]foriinr

python - 以 Pythonic 方式将 Excel 或电子表格列字母转换为其编号

是否有更pythonic的方法将excel样式的列转换为数字(从1开始)?最多两个字母的工作代码:defcolumn_to_number(c):"""Returnnumbercorrespondingtoexcel-stylecolumn."""number=-25forlinc:ifnotlinstring.ascii_letters:returnFalsenumber+=ord(l.upper())-64+25returnnumber代码运行:>>>column_to_number('2')False>>>column_to_number('A')1>>>column_to_num