如果我有一个字符串,我可以使用以下str.split方法将其拆分为空格:
"hello world!".split()
Run Code Online (Sandbox Code Playgroud)
回报
['hello', 'world!']
Run Code Online (Sandbox Code Playgroud)
如果我有一个像这样的列表
['hey', 1, None, 2.0, 'string', 'another string', None, 3.0]
Run Code Online (Sandbox Code Playgroud)
是否有分裂方法会分裂None并给我
[['hey', 1], [2.0, 'string', 'another string'], [3.0]]
Run Code Online (Sandbox Code Playgroud)
如果没有内置方法,最好的Pythonic /优雅方法是什么?
我刚刚开始使用Visual Studio(我从dreamspark获得了VS 2012,并且我已经开始使用Windows了很长时间)并且我遇到了一些麻烦.
我的Source Files文件夹下有一个名为"main.c"的文件,如下所示:
#include <stdio.h>
typedef struct S_s S;
struct S_s {
void* x;
};
int main(int argc, char** argv)
{
int N;
scanf("%d", &N);
S* s;
printf("%p", s);
return 0;
}
Run Code Online (Sandbox Code Playgroud)
当我尝试构建它时,给出了以下错误消息:
Error 3 error C2065: 's' : undeclared identifier c:\users\math4tots\documents\visual studio 2012\projects\algorithms\lecture1\main.c 13 1 Lecture1
Error 4 error C2065: 's' : undeclared identifier c:\users\math4tots\documents\visual studio 2012\projects\algorithms\lecture1\main.c 14 1 Lecture1
Error 2 error C2275: 'S' : illegal use of this type as an expression c:\users\math4tots\documents\visual studio 2012\projects\algorithms\lecture1\main.c …Run Code Online (Sandbox Code Playgroud) 我有很多字符串.就我的目的而言,如果一个是另一个的旋转,则两个字符串是等价的(例如'1234'相当于'3412').
什么是在Python中处理每个字符串一次(直到旋转)的有效方法?
我想要的天真实现可能看起来像:
class DuplicateException(Exception): pass
seen = set()
for s in my_strings:
try:
s2 = s+s
for t in seen:
# Slick method I picked up here in SO
# for checking whether one string is
# a rotation of another
if len(s) == len(t) and t in s2:
raise DuplicateException()
seen.add(s)
process(s)
except DuplicateException: pass
Run Code Online (Sandbox Code Playgroud) 是否有不同步的版本java.util.Stack?
ArrayList 几乎拥有我想要的一切,除了似乎没有一个方法可以在分摊的常数时间内删除最后一个元素.
我想要的东西可以像堆栈一样,但仍然让我可以随意访问元素.
如果真的没有什么,对我来说只是推出自己的或者只是使用它并不是什么大不了的事情java.util.Stack,但我觉得很奇怪,我找不到Stack非同步的对应物,我认为它可能值得一提(Googling似乎只是指向其他实现,而不是标准库中的类).
我不想修改我的java主目录中的任何内容,但是,我担心有时我的默认java.policy文件可能过于宽松.当我使用该-Djava.security.manager选项运行java时,有没有办法让我使用指定的策略文件作为唯一的策略文件?
如果我添加一个-Djava.security.policy=myPolicy.policy选项,它除了使用默认策略文件之外还使用我的策略文件 - 这很糟糕,因为看起来仍然授予了在默认策略文件中授予的所有权限.
在Python中,如果我有一个对象,比如说x,那么如何创建一个新对象,y以便x和y属于同一类?
在 Java 中,我想要的代码看起来像这样:
Object y = x.getClass().newInstance();
Run Code Online (Sandbox Code Playgroud) print(hasattr(int, '__call__'))
print(hasattr(lambda x: x, '__call__'))
print('')
class A(object):
a = int
b = lambda x : x
print(A.a)
print(A.b)
Run Code Online (Sandbox Code Playgroud)
结果是
True
True
<type 'int'>
<unbound method A.<lambda>>
Run Code Online (Sandbox Code Playgroud)
Python如何确定将成为一种方法(就像A.b这里一样)以及它本身将会是什么(就像A.a这里一样)?
我遇到过这篇文章,建议如果你的密钥总是字符串,那么就需要使用'裸对象'来满足你的hashmap.
裸对象是使用null原型值创建的对象,例如Object.create(null).使用对象文字符号(即{})不会创建裸对象,因为它们被设置Object.prototype为原型.
文章指出裸机对象的优点是你可以将它们用作哈希映射,而不必担心内置键,比如toString在使用同名密钥时可能会导致错误.
这种行为是ES5和/或ES6标准的一部分吗?也就是说,如果我在代码中使用裸对象作为字符串键哈希映射,我可以依赖我的代码以我期望的方式运行吗?这里有什么警告吗?
我想要一个包装类,其行为与它包装的对象完全相同,只是它添加或覆盖了一些select方法.
我的代码目前看起来像这样:
# Create a wrapper class that equips instances with specified functions
def equipWith(**methods):
class Wrapper(object):
def __init__(self, instance):
object.__setattr__(self, 'instance',instance)
def __setattr__(self, name, value):
object.__setattr__(object.__getattribute__(self,'instance'), name, value)
def __getattribute__(self, name):
instance = object.__getattribute__(self, 'instance')
# If this is a wrapped method, return a bound method
if name in methods: return (lambda *args, **kargs: methods[name](self,*args,**kargs))
# Otherwise, just return attribute of instance
return instance.__getattribute__(name)
return Wrapper
Run Code Online (Sandbox Code Playgroud)
为了测试这个,我写道:
class A(object):
def __init__(self,a):
self.a = a
a = A(10)
W = …Run Code Online (Sandbox Code Playgroud) 起初我曾相信使用下划线来制作闭包(例如println _)只是使用箭头的简写(例如x => println x),但我最近才知道你也可以做以下事情:
def f(a: Int, b: Int) = a + 2 * b
List(1, 2, 3).reduce(f _)
Run Code Online (Sandbox Code Playgroud)
鉴于我过去的假设,f _看起来像一个闭包,它只接受一个参数并且只传递一个参数f.我以为它会告诉我它无法编译因为f需要两个参数,并且reduce应该期望一个带有两个参数的函数.但是就像我写的那样:
def f(a: Int, b: Int) = a + 2 * b
List(1, 2, 3).reduce((x, y) => f(x, y))
Run Code Online (Sandbox Code Playgroud)
这里发生了什么?使用下划线创建闭包的规则是什么?
python ×5
java ×2
string ×2
algorithm ×1
c ×1
ecmascript-5 ×1
ecmascript-6 ×1
javascript ×1
list ×1
oop ×1
scala ×1
security ×1
stack ×1
wrapper ×1