小编Ash*_*ary的帖子

同时枚举两个python列表?

如何同时枚举两个相等长度的列表?我确信必须有更多的pythonic方法来执行以下操作:

for index, value1 in enumerate(data1):
    print index, value1 + data2[index]
Run Code Online (Sandbox Code Playgroud)

我想在for循环中使用index和data1 [index]和data2 [index].

python list

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

通过在Python中切片列表来分配值的紧凑方式

我有以下清单

bar = ['a','b','c','x','y','z']
Run Code Online (Sandbox Code Playgroud)

我想要做的就是分配1,第4和第5的值barv1,v2,v3,有没有更紧凑的方式比这做的事:

v1, v2, v3 = [bar[0], bar[3], bar[4]]
Run Code Online (Sandbox Code Playgroud)

因为在Perl中你可以这样做:

my($v1, $v2, $v3) = @bar[0,3,4];
Run Code Online (Sandbox Code Playgroud)

python list slice

45
推荐指数
5
解决办法
2763
查看次数

在python 2和3中使用input/raw_input

我想用以下问题设置用户提示:

save_flag is not set to 1; data will not be saved. Press enter to continue.
Run Code Online (Sandbox Code Playgroud)

input()适用于python3但不适用于python2.raw_input()适用于python2但不适用于python3.有没有办法做到这一点,以便代码兼容python 2和python 3?

python input python-2.x raw-input python-3.x

40
推荐指数
3
解决办法
2万
查看次数

python用双反斜杠替换单反斜杠

在python中,我试图用双反斜杠("\")替换单个反斜杠("\").我有以下代码:

directory = string.replace("C:\Users\Josh\Desktop\20130216", "\", "\\")
Run Code Online (Sandbox Code Playgroud)

但是,这会给出一条错误消息,说它不喜欢双反斜杠.有人可以帮忙吗?

python string replace backslash

38
推荐指数
3
解决办法
7万
查看次数

python中的内存错误

Traceback (most recent call last):
File "/run-1341144766-1067082874/solution.py", line 27, in 
main()
File "/run-1341144766-1067082874/solution.py", line 11, in main
if len(s[i:j+1]) > 0:
MemoryError
Error in sys.excepthook:
Traceback (most recent call last):
File "/usr/lib/python2.7/dist-packages/apport_python_hook.py", line 64, in apport_excepthook
from apport.fileutils import likely_packaged, get_recent_crashes
File "/usr/lib/python2.7/dist-packages/apport/__init__.py", line 1, in 
from apport.report import Report
MemoryError

Original exception was:
Traceback (most recent call last):
File "/run-1341144766-1067082874/solution.py", line 27, in 
main()
File "/run-1341144766-1067082874/solution.py", line 11, in main
if len(s[i:j+1]) > 0:
MemoryError
Run Code Online (Sandbox Code Playgroud)

当我尝试运行以下程序时出现上述错误.有人可以解释什么是内存错误,以及如何解决这个问题?.程序将字符串作为输入并查找所有可能的子字符串并从中创建一个集合(按字典顺序排列),它应该在用户询问的相应索引处打印该值,否则应打印"无效"

def main(): …
Run Code Online (Sandbox Code Playgroud)

python memory

37
推荐指数
3
解决办法
22万
查看次数

Python3 - 无法在__import__对象上调用reload()?

好吧,出于多种原因,我s = __import__('parse')在Python2中使用的时间最长,现在我需要为某些项目转换到Python3(主要是由于SSL).

但就reload()我发现而言,Python3中并没有相应的内容.只有一个选择:

import parse
parse.reload() #works
Run Code Online (Sandbox Code Playgroud)

但我真的,真的需要这个工作:

parse = __import__('parse')
parse.reload()
Run Code Online (Sandbox Code Playgroud)

要么

reload(parse)
Run Code Online (Sandbox Code Playgroud)

关于如何让它在Python3中运行的任何想法?

python module reload python-3.x python-3.3

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

列表理解与生成器表达式的奇怪时间结果?

我正在回答这个问题,我更喜欢这里的生成器表达并使用它,我认为它会更快,因为生成器不需要先创建整个列表:

>>> lis=[['a','b','c'],['d','e','f']]
>>> 'd' in (y for x in lis for y in x)
True
Run Code Online (Sandbox Code Playgroud)

Levon在他的解决方案中使用了列表理解,

>>> lis = [['a','b','c'],['d','e','f']]
>>> 'd' in [j for i in mylist for j in i]
True
Run Code Online (Sandbox Code Playgroud)

但是当我做这些LC的时间结果比生成器快时:

~$ python -m timeit -s "lis=[['a','b','c'],['d','e','f']]" "'d' in (y for x in lis for y in x)"
    100000 loops, best of 3: 2.36 usec per loop
~$ python -m timeit -s "lis=[['a','b','c'],['d','e','f']]" "'d' in [y for x in lis for y …
Run Code Online (Sandbox Code Playgroud)

python list-comprehension list generator-expression timeit

34
推荐指数
3
解决办法
4605
查看次数

列表是否理解为Python 3中的`list(generator expression)`的语法糖?

在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

33
推荐指数
3
解决办法
2249
查看次数

Python:Collections.Counter vs defaultdict(int)

假设我有一些如下所示的数据.

Lucy = 1
Bob = 5
Jim = 40
Susan = 6
Lucy = 2
Bob = 30
Harold = 6
Run Code Online (Sandbox Code Playgroud)

我想结合1)删除重复键,2)添加这些重复键的值.这意味着我得到了键/值:

Lucy = 3
Bob = 35
Jim = 40
Susan = 6
Harold = 6
Run Code Online (Sandbox Code Playgroud)

使用(来自集合)计数器或默认字典会更好吗?

python dictionary

32
推荐指数
2
解决办法
1万
查看次数

如何使用`enumerate`迭代`dict`并解压缩索引,键和值以及迭代

如何迭代dict,enumerate以便我可以在迭代时解压缩索引,键和值?

就像是:

for i, (k, v) in enumerate(mydict):
    # some stuff
Run Code Online (Sandbox Code Playgroud)

我想遍历一个被调用的字典中的键和值mydict并计算它们,所以我知道我什么时候在最后一个.

python dictionary

32
推荐指数
1
解决办法
2万
查看次数