根据Python文档,当我执行范围(0,10)时,此函数的输出是0到9的列表,即[0,1,2,3,4,5,6,7,8,9].然而,尽管有很多这样的在线工作示例,但我的PC上的Python安装并没有输出.
这是我的测试代码......
test_range_function = range(0, 10)
print(test_range_function)
print(type(test_range_function))
Run Code Online (Sandbox Code Playgroud)
我想的输出应该是打印的列表,类型函数应该将其作为列表输出.相反,我得到以下输出...
c:\Programming>python range.py
range(0, 10)
<class 'range'>
Run Code Online (Sandbox Code Playgroud)
我没有在网上的任何一个例子中看到这一点,并且非常欣赏这方面的一些亮点.
我确信这有一个非常简单的答案,但在搜索了一段时间后我找不到它.
prefixes = "JKLMNOPQ"
suffix = "ack"
for letter in prefixes:
if letter == "Q" or letter == "O":
print letter + "u" + suffix
else:
print letter + suffix
Run Code Online (Sandbox Code Playgroud)
上面的代码工作得很好,if语句的条件似乎有点啰嗦,所以我试过:
if letter == "Q" or "O":
Run Code Online (Sandbox Code Playgroud)
这是较短但不起作用.我发现它不起作用,因为"O"是一个布尔表达式,它总是为True,并且它不考虑"或"左侧的任何内容.
我尝试将括号括在它周围:
if letter == ("Q" or "O"):
Run Code Online (Sandbox Code Playgroud)
但那只匹配Q而不是O.
有没有简单的方法让代码工作,或者我必须使用对我有用的冗长方式?
我花了最后2个小时来讨论这个问题,我可能已经阅读了有关传递给函数的变量的所有问题.我的问题是参数/参数的常见问题是受到函数内部所做更改的影响,即使我已经通过variable_cloned = variable[:]在函数中使用来删除引用/别名来复制内容而没有引用.
这是代码:
def add_column(m):
#this should "clone" m without passing any reference on
m_cloned = m[:]
for index, element in enumerate(m_cloned):
# parameter m can be seen changing along with m_cloned even
# though 'm' is not touched during this function except to
# pass it's contents onto 'm_cloned'
print "This is parameter 'm' during the for loop...", m
m_cloned[index] += [0]
print "This is parameter 'm' at end of for loop...", m
print "This is …Run Code Online (Sandbox Code Playgroud)