小编Mar*_*Lee的帖子

如何在Python中修改datetime.datetime.hour?

我想计算从现在到明天12:00之间的秒数.所以我需要明天12:00 datetime对象.

这是伪代码:

today_time = datetime.datetime.now()
tomorrow = today_time + datetime.timedelta(days = 1)
tomorrow.hour = 12
result = (tomorrow-today_time).total_seconds()
Run Code Online (Sandbox Code Playgroud)

但它会引发这个错误:

AttributeError: attribute 'hour' of 'datetime.datetime' objects is not writable
Run Code Online (Sandbox Code Playgroud)

如何修改小时或如何获得明天的12:00 datetime对象?

python datetime

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

如何在Python中的日期准确减去X个月?

所以这段代码是我想要的:

import datetime
d = datetime.date.today()

three_months_ago = d - timedelta(months=3)
Run Code Online (Sandbox Code Playgroud)

但是,正如我们所知,timedelta 中不存在 'months' 参数。

我承认我可以这样编程来实现目标:

if d.month > 3:
    three_months_ago = datetime.date(d.year, d.month-3, d.day)
else:
    three_months_ago = datetime.date(d.year-1, d.month-3+12, d.day)
Run Code Online (Sandbox Code Playgroud)

但这似乎真的很愚蠢......

你们能告诉我如何聪明地意识到这一点吗?

python datetime

7
推荐指数
1
解决办法
6666
查看次数

有人可以为我解释这个递归吗?

我从leetcode获取此代码.

class Solution(object):
    def myPow(self, x, n):
         if n == 0: 
             return 1
         if n == -1: 
             return 1 / x
         return self.myPow(x * x, n / 2) * ([1, x][n % 2])
Run Code Online (Sandbox Code Playgroud)

此代码用于实现poe(x, n),这意味着x**n在Python中.

我想知道为什么它可以实现pow(x, n).

它看起来没有意义......

我明白

if n == 0: 
and
if n == -1:
Run Code Online (Sandbox Code Playgroud)

但核心代码:

self.myPow(x * x, n / 2) * ([1, x][n % 2])
Run Code Online (Sandbox Code Playgroud)

真的很难理解.

顺便说一句,这段代码仅适用于Python 2.7.如果你想在Python 3上进行测试,你应该改变

myPow(x*x, n / 2) * ([1, x][n % 2])
Run Code Online (Sandbox Code Playgroud)

至 …

python recursion python-2.x

6
推荐指数
1
解决办法
254
查看次数

如何在Python中将单元素列表完美地转换为元组?

所以我想这样做:

tuple([1])
Run Code Online (Sandbox Code Playgroud)

我期望的输出是:

(1)
Run Code Online (Sandbox Code Playgroud)

但是,我得到了这个:

(1,)
Run Code Online (Sandbox Code Playgroud)

但如果我这样做:

tuple([1,2])
Run Code Online (Sandbox Code Playgroud)

它完美无缺!像这样:

(1,2)
Run Code Online (Sandbox Code Playgroud)

这太奇怪了,我不知道为什么元组函数会导致这个结果.

请帮我修理一下.

python tuples python-3.x python-3.5

4
推荐指数
1
解决办法
6346
查看次数

如何让Python可执行文件在出现错误时暂停?

所以我知道我可以使用pyinstaller.

然而,每次它引发错误时,它都会立即结束程序,所以我找不到错误是什么。

我知道我也许可以用来time.sleep(30000)阻止它。

但如果代码在遇到 之前引发错误time.sleep(30000),它就会关闭。

总结一下,如何让它一直不关机,以便我看看错误在哪里?

python

4
推荐指数
1
解决办法
8387
查看次数

为什么这段代码在某些情况下会引发IndexError?

我的功能是这样的:

输入:

8
Run Code Online (Sandbox Code Playgroud)

输出:

['000', '001', '010', '011', '100', '101', '110', '111']
Run Code Online (Sandbox Code Playgroud)

所以这是创建一个列表来存储input_number从0开始的二进制数.这是我的代码(正确的版本):

import math

input_num = 8
max_bit = math.ceil(math.log(input_num, 2))

list_Bin = [None] * input_num

for i in range(input_num):
    extra_d = max_bit - len(bin(i)[2:])
    list_Bin[i] = '0'*extra_d + bin(i)[2:]

print(list_Bin)
Run Code Online (Sandbox Code Playgroud)

这段代码效果很好.但是,如果我改变一行代码:

list_Bin = [None] * input_num
Run Code Online (Sandbox Code Playgroud)

list_Bin = [] * input_num
Run Code Online (Sandbox Code Playgroud)

它会引发IndexError.

我真的很想知道为什么,因为我多次遇到过这个问题.

python indexing list python-3.x

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

如何使用for循环并每次添加一天(timedelta)

这是我的代码:

import datetime

date = datetime.date(2015,10,1)
today = datetime..today()
oneday = datetime.timedelta(days = 1)

date_counter = 0
while not date == today:
    date_counter+=1
    date += oneday
Run Code Online (Sandbox Code Playgroud)

在这段代码中,我使用while循环来实现我的目标 - 计算今天和用户选择的特定日期之间的天数.

但是,我想使用for循环来做同样的事情.可以改写吗?

python for-loop while-loop

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

为什么我不能通过Python设置差异?

所以我有几点经验:

>>>{2,3} - {2}
{3}
Run Code Online (Sandbox Code Playgroud)

这一个很完美.

但是,这个似乎不起作用:

>>> {{2,3},{4,3}} - {{4,3}}
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
TypeError: unhashable type: 'set'
Run Code Online (Sandbox Code Playgroud)

我认为它应该工作,

因为我使用一组包含两个元素,{2,3}和{4,3}到减去一个元素{4,3}.

尽管如此,它无法奏效.为什么?

python set

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

该字段必须是累加器对象。(该字段是日期字符串。)

我正在尝试按日期字符串进行分组并计算每个日期有多少数据。

首先,我将 ISOdate 转换为日期字符串:

db.test.aggregate([
    {
        $project: {
                yearMonthDay: { $dateToString: { format: "%Y-%m-%d", date: "$file_date" } }
        }
    },
])
Run Code Online (Sandbox Code Playgroud)

结果:

此处输入图像描述

到目前为止一切都很好,直到我这样做:

db.closing_nassau.aggregate([
    {
        $project: {
                yearMonthDay: { $dateToString: { format: "%Y-%m-%d", date: "$detail.file_date" } }
        }
    },
    { $group: { date: "$yearMonthDay", count: { $sum: 1 } } },
])
Run Code Online (Sandbox Code Playgroud)

一直显示:

"message" : "字段‘日期’必须是累加器对象”

我认为这应该有效。我首先将 ISOdate 转换为日期字符串。我按日期字符串分组并计算每个日期。我尝试删除它count: { $sum: 1 },但它仍然显示相同的错误,因此问题出在分组依据上。

请随时询问更多信息以帮助我。

aggregate-functions mongodb

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

如何用python删除字符串中的所有特殊字符?

我想删除所有特殊字符,例如“|”、“.” 或字符串中的“$”。

这是我的代码:

string= '#$#&^&#$@||||123515'
re.sub(r'[^a-zA-Z0-9]', '', string)
print(string)
Run Code Online (Sandbox Code Playgroud)

输出:

#$#&^&#$@||||123515
Run Code Online (Sandbox Code Playgroud)

我知道这个正则表达式意味着删除除 number、az 和 AZ 之外的所有内容。

但它无法删除所有特殊字符。

有人能告诉我为什么吗?谢谢你!:)

python regex

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

如何通过Python不重复安排两套?

我已经有一个方法几乎可以做到这一点:

from itertools import product

l = {1,2,3}

print(list(product(l,l)))
Run Code Online (Sandbox Code Playgroud)

输出是:

[(1, 1), (1, 2), (1, 3), (2, 1), (2, 2), (2, 3), (3, 1), (3, 2), (3, 3)]
Run Code Online (Sandbox Code Playgroud)

但是,我不想像(1,1),(2,2),(3,3)这样的集合

和(2,3),(3,2)应该只出现一次,因为它们在集合概念中是相同的.

所以我想要的输出是:

[(1, 2), (1, 3), (2, 1), (2, 3)]
Run Code Online (Sandbox Code Playgroud)

我怎样才能做到这一点?

python set

0
推荐指数
1
解决办法
84
查看次数

如何删除Python中列出的当前元素?

这就是我想要的:

A = [1,2,3]

for a in A:
    if a > 1:
        del a

print(A)
Run Code Online (Sandbox Code Playgroud)

我希望列表a为[1],但它仍然是[1,2,3].

所以我的真正目标是删除我现在获得的当前元素.

我知道'del'有一种用法:

A = [1,2,3]

for i, a in enumerate(A):
    if a > 1:
        del A[i]

print(A)
Run Code Online (Sandbox Code Playgroud)

列表a将是[1,3]而不是[1].

因为我用的时候

del a[1] #2
Run Code Online (Sandbox Code Playgroud)

列表A中的orginally 3将需要使用索引1从列表A中获取它而不是使用2.因此我无法成功删除它.

如何删除列表中的当前元素?

python list

0
推荐指数
1
解决办法
111
查看次数