相关疑难解决方法(0)

获取Python中的当前时间(以毫秒为单位)?

如何在Python中获取当前时间(以毫秒为单位)?

python time datetime

468
推荐指数
13
解决办法
66万
查看次数

如何删除非ASCII字符但使用Python留下句点和空格?

我正在使用.txt文件.我想要一个文件的字符串,没有非ASCII字符.但是,我想留下空格和句号.目前,我也正在剥离它们.这是代码:

def onlyascii(char):
    if ord(char) < 48 or ord(char) > 127: return ''
    else: return char

def get_my_string(file_path):
    f=open(file_path,'r')
    data=f.read()
    f.close()
    filtered_data=filter(onlyascii, data)
    filtered_data = filtered_data.lower()
    return filtered_data
Run Code Online (Sandbox Code Playgroud)

我应该如何修改onlyascii()以留出空格和句点?我想这不是太复杂但我无法弄明白.

python unicode text ascii filter

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

生成器理解究竟是如何工作的?

生成器理解有什么作用?它是如何工作的?我找不到关于它的教程.

python

84
推荐指数
4
解决办法
5万
查看次数

python:获取具有特定条件的列表(序列)中的项目数

假设我有一个包含大量项目的列表.

l = [ 1, 4, 6, 30, 2, ... ]
Run Code Online (Sandbox Code Playgroud)

我想从该列表中获取项目数,其中项目应满足特定条件.我的第一个想法是:

count = len([i for i in l if my_condition(l)])
Run Code Online (Sandbox Code Playgroud)

但是如果my_condition()过滤列表也有很多项,我认为为过滤结果创建新列表只是浪费内存.为了效率,恕我直言,以上呼叫不能比:

count = 0
for i in l:
    if my_condition(l):
        count += 1
Run Code Online (Sandbox Code Playgroud)

有没有任何功能风格的方法来获得满足特定条件的项目#而不生成临时列表?

提前致谢.

python functional-programming list count sequence

66
推荐指数
4
解决办法
7万
查看次数

从Python调试器列出理解范围错误

在调试我的代码时,我想使用列表理解.但是,当我在函数内部时,似乎无法从调试器中评估列表理解.

我使用的是Python 3.4.

脚本内容:

$ cat test.py 
#!/usr/bin/python

def foo():
    x = [1, 2, 3, 3, 4]

    print(x)

foo()
Run Code Online (Sandbox Code Playgroud)

交互式调试:

$ python3 -mpdb test.py                                                                                                                                           
> /tmp/test.py(3)<module>()
-> def foo():
(Pdb) step
> /tmp/test.py(8)<module>()
-> foo()
(Pdb) 
--Call--
> /tmp/test.py(3)foo()
-> def foo():
(Pdb) 
> /tmp/test.py(4)foo()
-> x = [1, 2, 3, 3, 4]
(Pdb) 
> /tmp/test.py(6)foo()
-> print(x)
(Pdb) p [x for _ in range(1)]
*** NameError: name 'x' is not defined
(Pdb) p x
[1, 2, 3, 3, …
Run Code Online (Sandbox Code Playgroud)

python debugging list-comprehension python-3.x

26
推荐指数
3
解决办法
2105
查看次数

Python单行"for"表达式

我不确定我是否需要lambda或其他东西.但是,我仍然需要以下内容:

我有一个array = [1,2,3,4,5].我需要把这个数组放到另一个数组中.但是把它全部写在一行.

for item in array:
    array2.append(item)
Run Code Online (Sandbox Code Playgroud)

我知道这完全可以遍历项目并使其成为一行.但谷歌搜索和阅读手册并没有帮助我...如果你能给我一个提示或命名这个东西,以便我能找到那是什么,我真的很感激.

更新:让我们这样说:array2 = SOME FANCY EXPRESSION THAT IS GOING TO GET ALL THE DATA FROM THE FIRST ONE

(这个例子不是真的.我只是想迭代不同的数据块,但这是我能想到的最好的)

python lambda

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

在Python中生成非常大的文本文件的时间性能

我需要生成一个非常大的文本文件.每一行都有一个简单的格式:

Seq_num<SPACE>num_val
12343234 759
Run Code Online (Sandbox Code Playgroud)

我们假设我将生成一个包含1亿行的文件.我尝试了两种方法,令人惊讶的是它们提供了非常不同的时间性能.

  1. 对于超过100米的循环.在每个循环中我创建短字符串seq_num<SPACE>num_val,然后我将其写入文件.这种方法需要花费很多时间.

    ## APPROACH 1  
    for seq_id in seq_ids:
        num_val=rand()
        line=seq_id+' '+num_val
        data_file.write(line)
    
    Run Code Online (Sandbox Code Playgroud)
  2. 对于超过100米的循环.在每个循环中我创建短字符串seq_num<SPACE>num_val,然后将其附加到列表中.当循环结束时,我迭代列表项并将每个项写入文件.这种方法花费的时间少得多.

    ## APPROACH 2  
    data_lines=list()
    for seq_id in seq_ids:
        num_val=rand()
        l=seq_id+' '+num_val
        data_lines.append(l)
    for line in data_lines:
        data_file.write(line)
    
    Run Code Online (Sandbox Code Playgroud)

注意:

  • 方法2有2个循环而不是1个循环.
  • 我在循环中写入方法1和方法2的文件.因此这两个步骤必须相同.

所以方法1必须花费更少的时间.什么提示我缺少什么?

python algorithm performance large-files large-data

12
推荐指数
3
解决办法
1085
查看次数

查找python列表之间的交集/差异

我有两个python列表:

a = [('when', 3), ('why', 4), ('throw', 9), ('send', 15), ('you', 1)]

b = ['the', 'when', 'send', 'we', 'us']
Run Code Online (Sandbox Code Playgroud)

我需要过滤掉与b中类似的所有元素.就像在这种情况下,我应该得到:

c = [('why', 4), ('throw', 9), ('you', 1)]
Run Code Online (Sandbox Code Playgroud)

什么应该是最有效的方法?

python numpy list

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

习惯上否定过滤器

filter用否定来写一个最惯用的方法是什么?

例:

is_even= lambda x : x % 2 == 0
odd_numbers= filter( lambda x: not is_even(x), range(10) )
Run Code Online (Sandbox Code Playgroud)

当然,你可以使用列表推导 - 但是你filter无论如何都不需要使用

如果有人想知道,我在尝试根据条件分割列表时偶然发现了这一点

python functional-programming filter negation

5
推荐指数
1
解决办法
2596
查看次数

我的 for 循环没有根据条件删除数组中的项目?Python

我有一个数组(移动)。我想迭代我的移动数组并为每个元素设置一个条件。条件是,如果元素中的任何一个数字为负数,那么我想从 moves 数组中删除该元素。循环无法正确删除我的项目。但是如果我通过完全相同的循环运行它两次,那么它将删除最后一个元素。这对我来说毫无意义。使用Python 3.6

moves = [[3,-1],[4,-1],[5,-1]]
for move in moves:
    if move[0] < 0 or move[1] < 0:
        moves.remove(move)
Run Code Online (Sandbox Code Playgroud)

如果运行此代码,移动将以 [[4,-1]] 的结果结束,但是如果您再次通过完全相同的 for 循环运行此结果,则结果为 []

我还尝试使用更多元素来执行此操作,但由于某种原因,它只是没有抓住某些元素。这是 .remove() 的错误吗?这就是我尝试过的...(在此我尝试检测非负数以查看这是否是问题的一部分,但事实并非如此)

moves = [[3,1],[4,1],[5,1],[3,1],[4,1],[5,1],[3,1],[4,1],[5,1]]
    for move in moves:
        if move[0] < 2 or move [1] < 2:
            moves.remove(move)
Run Code Online (Sandbox Code Playgroud)

上面代码的结果是

moves = [[4, 1], [3, 1], [4, 1], [5, 1]]
Run Code Online (Sandbox Code Playgroud)

有任何想法吗???

python python-3.x

5
推荐指数
1
解决办法
126
查看次数