相关疑难解决方法(0)

最优雅的方法来检查Python中的字符串是否为空?

Python是否有类似空字符串变量的地方,你可以这样做:

if myString == string.empty:
Run Code Online (Sandbox Code Playgroud)

无论如何,检查空字符串值的最优雅方法是什么?我""每次都发现硬编码检查空字符串不太好.

python string comparison-operators

1282
推荐指数
14
解决办法
148万
查看次数

"=="和"是"之间有区别吗?

我的Google-fu让我失望了.

在Python中,以下两个相等的测试是否等效?

n = 5
# Test one.
if n == 5:
    print 'Yay!'

# Test two.
if n is 5:
    print 'Yay!'
Run Code Online (Sandbox Code Playgroud)

对于您要比较实例的对象(list比如说),这是否适用?

好的,所以这样的答案我的问题:

L = []
L.append(1)
if L == [1]:
    print 'Yay!'
# Holds true, but...

if L is [1]:
    print 'Yay!'
# Doesn't.
Run Code Online (Sandbox Code Playgroud)

所以==测试值测试的地方is是否是同一个对象?

python equality reference semantics

630
推荐指数
11
解决办法
33万
查看次数

如何针对值测试多个变量?

我正在尝试创建一个函数,将多个变量与一个整数进行比较,并输出一个由三个字母组成的字符串.我想知道是否有办法将其翻译成Python.所以说:

x = 0
y = 1
z = 3
mylist = []

if x or y or z == 0 :
    mylist.append("c")
if x or y or z == 1 :
    mylist.append("d")
if x or y or z == 2 :
    mylist.append("e")
if x or y or z == 3 : 
    mylist.append("f")
Run Code Online (Sandbox Code Playgroud)

这将返回一个列表

["c", "d", "f"]
Run Code Online (Sandbox Code Playgroud)

这样的事情可能吗?

python comparison boolean-logic if-statement match

594
推荐指数
19
解决办法
19万
查看次数

Python中的字符串比较:是vs ==

我注意到我写的一个Python脚本是松散的,并将其追溯到一个无限循环,循环条件是while line is not ''.在调试器中运行它,事实证明该行''.当我改为!=''而不是is not '',它工作得很好.

另外,通常认为默认情况下使用'=='会更好,即使在比较int或Boolean值时也是如此?我一直喜欢使用'是'因为我发现它更美观和pythonic(这就是我陷入这个陷阱...),但我想知道它是否只是为了保留当你关心找到两个具有相同id的对象.

python string comparison equality

524
推荐指数
4
解决办法
97万
查看次数

Python!=操作vs"不是"

在对这个问题的评论中,我看到了一个建议使用的声明

result is not None
Run Code Online (Sandbox Code Playgroud)

VS

result != None
Run Code Online (Sandbox Code Playgroud)

我想知道区别是什么,以及为什么可能推荐另一个?

python operators

223
推荐指数
5
解决办法
16万
查看次数

将变量的名称作为字符串

这个主题讨论如何在Python中将函数的名称作为字符串获取:如何在Python中将 函数名称作为字符串获取?

如何为变量做同样的事情?(注意Python变量没有属性__name__,至少在Python中retrieve_name)

换句话说,如果我有一个变量,例如:

foo = dict()
foo['bar'] = 2
Run Code Online (Sandbox Code Playgroud)

我正在寻找一个函数/属性,例如'foo':

retrieve_name(foo) 
Run Code Online (Sandbox Code Playgroud)

返回字符串 __name__

更新:

既然人们在问我为什么要这样做,这里就是一个例子.我想在此列表中在Pandas中创建一个DataFrame,其中列名 由实际字典的名称给出:

# List of dictionaries for my DataFrame
list_of_dicts = [n_jobs, users, queues, priorities]
Run Code Online (Sandbox Code Playgroud)

python

112
推荐指数
13
解决办法
16万
查看次数

如何检查变量是否等于一个字符串或另一个字符串?

if var is 'stringone' or 'stringtwo':
    dosomething()
Run Code Online (Sandbox Code Playgroud)

这不起作用!我有一个变量,当它是值中的任何一个时我需要它做某事,但它不会进入if语句.在Java if (var == "stringone" || "stringtwo")工作.我怎么用Python写这个?

python

68
推荐指数
3
解决办法
35万
查看次数

当字符串中有点时,为什么"is"关键字具有不同的行为?

考虑以下代码:

>>> x = "google"
>>> x is "google"
True
>>> x = "google.com"
>>> x is "google.com"
False
>>>
Run Code Online (Sandbox Code Playgroud)

为什么会那样?

为了确保上述内容正确,我刚刚在Linux上测试了Python 2.5.4,2.6.5,2.7b2,Python 3.1和Linux上的Python 2.7b1.

看起来所有这些都是一致的,所以它是设计的.我错过了什么吗?

我发现,我的一些个人域名过滤脚本失败了.

python identity equality

56
推荐指数
2
解决办法
2530
查看次数

在Python中使用"is"或"=="进行数字比较是否更好?

使用"is"运算符或"=="运算符来比较Python中的两个数字是否更好?

例子:

>>> a = 1
>>> a is 1
True
>>> a == 1
True
>>> a is 0
False
>>> a == 0
False
Run Code Online (Sandbox Code Playgroud)

python

55
推荐指数
4
解决办法
9万
查看次数

Python中未分配的字符串如何在内存中有地址?

谁可以给我解释一下这个?所以我一直在python中使用id()命令,并遇到了这个:

>>> id('cat')
5181152
>>> a = 'cat'
>>> b = 'cat'
>>> id(a)
5181152
>>> id(b)
5181152
Run Code Online (Sandbox Code Playgroud)

除了一部分之外,这对我有意义:字符串'cat'在我将其分配给变量之前在内存中有一个地址.我可能只是不明白内存寻址是如何工作的,但是有人可以向我解释这一点,或者至少告诉我应该读一下内存寻址吗?

所以这一切都很好,但这让我更加困惑:

>>> a = a[0:2]+'t'
>>> a
'cat'
>>> id(a)
39964224
>>> id('cat')
5181152
Run Code Online (Sandbox Code Playgroud)

这让我感到很奇怪,因为'cat'是一个地址为5181152的字符串,但是新的a具有不同的地址.所以,如果内存中有两个'cat'字符串,为什么不为id('cat')打印两个地址?我最后的想法是连接与地址的变化有关,所以我尝试了这个:

>>> id(b[0:2]+'t')
39921024
>>> b = b[0:2]+'t'
>>> b
'cat'
>>> id(b)
40000896
Run Code Online (Sandbox Code Playgroud)

我本来可以预测ID是相同的,但事实并非如此.思考?

python memory-address

45
推荐指数
4
解决办法
2010
查看次数