我有一个包含数字字符串的列表,如下所示:
numbers = ['1', '5', '10', '8'];
Run Code Online (Sandbox Code Playgroud)
我想将每个列表元素转换为整数,所以它看起来像这样:
numbers = [1, 5, 10, 8];
Run Code Online (Sandbox Code Playgroud)
我可以使用循环来完成它,如下所示:
new_numbers = [];
for n in numbers:
new_numbers.append(int(n));
numbers = new_numbers;
Run Code Online (Sandbox Code Playgroud)
它必须如此丑陋吗?我确信在一行代码中有更多的pythonic方法可以做到这一点.请帮帮我.
>>> x=[1,2]
>>> x[1]
2
>>> x=(1,2)
>>> x[1]
2
Run Code Online (Sandbox Code Playgroud)
它们都有效吗?出于某种原因是首选吗?
我刚刚才知道有Truthy和Falsy在Python这是与正常不同的价值观True和False?
是否有人可以深入解释什么truthy和falsy值?
我应该在哪里使用它们?
truthy和True值以及falsy和False值之间有什么区别?
这与你可以使用Python生成器函数有什么相反?:python生成器,生成器表达式和itertools模块是我最近python的一些特性.它们在设置操作链以在大量数据上执行时特别有用 - 我经常在处理DSV文件时使用它们.
那么什么时候不是使用生成器,生成器表达式或itertools函数的好时机?
zip()过itertools.izip(),或range()结束xrange(),或[x for x in foo]结束(x for x in foo)?显然,我们最终需要将生成器"解析"为实际数据,通常是通过创建列表或使用非生成器循环对其进行迭代.有时我们只需知道长度.这不是我要问的.
我们使用生成器,因此我们不会将新列表分配给内存以用于临时数据.这对于大型数据集尤其有用.对于小型数据集也有意义吗?有明显的内存/ CPU权衡吗?
考虑到列表理解性能与map()和filter()的开放性讨论,我特别感兴趣的是,如果有人对此做了一些分析.(alt链接)
我正在尝试使用以下方法打印出Python路径文件夹:
import sys
print sys.path
Run Code Online (Sandbox Code Playgroud)
输出是这样的:
>>> print sys.path
['.', '/usr/bin', '/home/student/Desktop', '/home/student/my_modules', '/usr/lib/pyth
on2.6', '/usr/lib/python2.6/plat-linux2', '/usr/lib/python2.6/lib-tk', '/usr/lib/pyth
on2.6/lib-old', '/usr/lib/python2.6/lib-dynload', '/usr/local/lib/python2.6/dist-pack
ages', '/usr/lib/python2.6/dist-packages', '/usr/lib/python2.6/dist-packages/PIL', '/
usr/lib/python2.6/dist-packages/gst-0.10', '/usr/lib/pymodules/python2.6', '/usr/lib/
python2.6/dist-packages/gtk-2.0', '/usr/lib/pymodules/python2.6/gtk-2.0', '/usr/lib/p
ython2.6/dist-packages/wx-2.8-gtk2-unicode']
Run Code Online (Sandbox Code Playgroud)
如何将它们打印成单独的行,以便我可以正确解析它们?
它应该是这样的:
/usr/bin
/home/student/Desktop
/home/student/my_modules
etc
Run Code Online (Sandbox Code Playgroud) 以下简单的LINQ代码
string[] words = { "hello", "wonderful", "linq", "beautiful", "world" };
// Get only short words
var shortWords =
from word in words
where word.Length <= 5
select word;
// Print each word out
shortWords.Dump();
Run Code Online (Sandbox Code Playgroud)
可以使用列表推导将其翻译成python,如下所示.
words = ["hello", "wonderful", "linq", "beautiful", "world"]
shortWords = [x for x in words if len(x) <=5]
print shortWords
Run Code Online (Sandbox Code Playgroud)
是否有单行程序来读取Python中文件的所有行,而不是标准:
f = open('x.txt')
cts = f.read()
f.close()
Run Code Online (Sandbox Code Playgroud)
似乎经常这样做,所以必须有一个单行.有任何想法吗?
在Python 3中,列表理解只是语法糖,用于生成list函数的生成器表达式?
例如是以下代码:
squares = [x**2 for x in range(1000)]
Run Code Online (Sandbox Code Playgroud)
实际上在后台转换成以下内容?
squares = list(x**2 for x in range(1000))
Run Code Online (Sandbox Code Playgroud)
我知道输出是相同的,并且Python 3修复了列表推导所具有的周围命名空间的令人惊讶的副作用,但就CPython解释器所做的事情而言,前者转换为后者,或者是否有任何区别在如何执行代码?
我发现,在评论部分等价的这一主张这个问题,和快速谷歌搜索显示了同样的要求正在作出这里.
在Python 3.0文档中的新内容中也提到了这一点,但措辞有些含糊:
还要注意,列表推导具有不同的语义:它们更接近于list()构造函数中的生成器表达式的语法糖,特别是循环控制变量不再泄漏到周围的范围中.
python list-comprehension generator-expression python-3.x python-internals
我有这段代码:
numbers = range(1, 50)
for i in numbers:
if i < 20:
numbers.remove(i)
print(numbers)
Run Code Online (Sandbox Code Playgroud)
但我得到的结果是:
[2,4,6,8,10,12,14,16,18,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35 ,36,37,38,39,40,41,42,43,44,45,46,47,48,49]
当然我希望结果中没有出现20以下的数字,我假设我在删除时做错了.
存在用于Python的静态分析工具,但编译时间检查往往与Python所包含的运行时绑定哲学截然相反.这可能与一个静态分析工具来执行一些"包装标准Python解释器使用严格 "般的约束,但我们没有看到任何广泛采用的这样的事情.
有没有关于Python的东西会使"使用严格"的行为变得不必要或特别不受欢迎?
或者,Perl中的"使用严格"行为是否已被广泛采用?
注意:"必要"是指"实际必要",并非绝对必要.显然你可以在没有"use strict"的情况下编写Perl,但是(从我所见过的)大多数Perl程序员都会使用它.
注意:Python解释器包装器不需要 "使用严格"类似的约束 - 您可以使用类似于"use strict"的伪编译指示,这将被普通解释器忽略.我不是在谈论添加语言级功能.
更新:解释Perl每条评论中"use strict"的作用.(官方文档链接在第一段.)
"use strict"指令有三个不同的组件,其中只有两个非常有趣:
use strict vars:在程序中静态检查词法范围的变量用法.(请记住,在Python中,基本上只有global范围和local范围).许多Python短信检查这种事情.因为它是他们可以做的唯一的静态分析,所以直言不讳地假设你使用简单的词汇范围,并在你告诉他们闭嘴之前警告你那些看似错误的东西; 即
FOO = 12
foo += 3
Run Code Online (Sandbox Code Playgroud)
如果您没有对命名空间做任何想法,那么检查拼写错误就很有用.
use strict refs:防止符号命名空间解除引用.Python最接近的模拟是使用locals()和globals()进行符号绑定和标识符查找.
use strict subs:在Python中没有真正的模拟.
python compiler-construction perl static-analysis use-strict
python ×10
list ×3
c# ×1
file-io ×1
generator ×1
iterator ×1
linq ×1
loops ×1
optimization ×1
perl ×1
python-3.x ×1
use-strict ×1