小编jfs*_*jfs的帖子

如何有效地离开外部联接两个排序列表

我有两个已经排序的列表。我需要离开外面加入他们。以下代码可完成工作:

left_sorted_list = [1, 2, 3, 4, 5]
right_sorted_list = [[2, 21], [4, 45], [6, 67]]
right_dict = {r[0]: r[1] for r in right_sorted_list}
left_outer_join = [[l, right_dict[l] if l in right_dict.keys() else None]
                   for l in left_sorted_list]
print(left_outer_join)
[[1, None], [2, 21], [3, None], [4, 45], [5, None]]
Run Code Online (Sandbox Code Playgroud)

但是,我不确定这种方法是否非常有效。有没有一种更有效的方法来利用正确的列表已经排序的事实,而无需编写循环?

编辑:我加入的键在左右列表中都是唯一的。

python algorithm

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

ISO 8601 + TimeZone中的DateTime,没有微秒

我需要ISO 8601中的日期时间字符串,没有任何微秒.

喜欢:

2015-01-05T11:26:00-03:00
Run Code Online (Sandbox Code Playgroud)

我用:

from pytz import timezone
from datetime import datetime
timezone(settings.TIME_ZONE).localize(datetime.now()).isoformat()
Run Code Online (Sandbox Code Playgroud)

但它返回:

'2015-01-28T17:49:39.711725-03:00'
Run Code Online (Sandbox Code Playgroud)

如何解决?

python django rfc3339 pytz

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

char python之间的大写

我需要帮助如何在这两个明星之间获得大写.

INPUT: "S*t*a*r*s are every*where*"

OUTPUT: "STaRs are everyWHERE"

我的代码在这里:

def trans(s):
    x = ""
    a = False
    for j in range(len(s)):
        if s[j] == "*" or a:
            a = True
            if a:
                x += s[j].upper()
        else:
            x += s[j]
    return "".join(x.replace("*",""))
Run Code Online (Sandbox Code Playgroud)

问题是我不知道循环回到哪里False.现在它只是看到*并使一切都变成大写.

国家机器

python python-3.x uppercase

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

如何将明天(在特定时间)日期转换为时间戳

我怎样才能为下一个6点创建一个时间戳,无论是今天还是明天?

我尝试使用datetime.datetime.today()并用+1和小时= 6替换日,但我无法将其转换为时间戳.

需要你的帮助

python datetime timestamp date python-2.5

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

改善"增加数字表示的数字"的时间复杂性

问题 给定一个非负数表示为数字数组,

将数字加1(增加数字所代表的数字).

存储数字使得最高有效数字位于列表的开头.

例:

如果向量有[1,2,3]

返回的向量应为[1,2,4]

因为123 + 1 = 124.

我的守则

def plusOne(A):
    num = 0

    for digit in A:
        num = num*10 + digit

    retnum = num + 1

    retA = []

    while retnum > 0:
        retA.append(retnum % 10)
        retnum /= 10

    return retA[::-1]
Run Code Online (Sandbox Code Playgroud)

好吧,我得到了正确答案.但是,我对代码的时间复杂性并不满意.建议改进此代码.

python algorithm time-complexity

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

isspace()是否接受getchar()值?

isspace()如果输入可表示为unsigned char或等于,则有效EOF.

getchar() 从stdin读取下一个字符.

getchar()!=EOF; 是否所有getchar()返回的值都可以表示为unsigned char

uintmax_t count_space = 0;
for (int c; (c = getchar()) != EOF; )
  if (isspace(c))
    ++count_space;
Run Code Online (Sandbox Code Playgroud)

愿这段代码导致未定义的行为吗?

c language-lawyer c11

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

如何使用Python strptime解析例如2010-04-24T07:47:00.007 + 02:00

有谁知道如何使用Pythons strptime方法解析标题中描述的格式?

我有类似的东西:

import datetime    
date = datetime.datetime.strptime(entry.published.text, '%Y-%m-%dT%H:%M:%S.Z')
Run Code Online (Sandbox Code Playgroud)

我似乎无法弄清楚这是什么样的时间格式.顺便说一句,我是Python语言的新手(我已经习惯了C#).

UPDATE

这是我根据以下建议(答案)更改代码的方式:

from dateutil.parser import *
from datetime import *
date = parse(entry.published.text)
Run Code Online (Sandbox Code Playgroud)

python date strptime rfc3339

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

argparse不检查位置参数

我正在创建一个脚本,它使用argparse获取位置和可选参数.我已经阅读了Doug的教程和python文档,但找不到答案.

parser = argparse.ArgumentParser(description='script to run')
parser.add_argument('inputFile', nargs='?', type=argparse.FileType('rt'),
parser.add_argument('inputString', action='store', nargs='?') 
parser.add_argument('-option1', metavar='percent', type=float, action='store')
parser.add_argument('-option2', metavar='outFile1', type=argparse.FileType('w'),
parser.add_argument('-option3', action='store', default='<10',
args = parser.parse_args()
# rest of script.... blah blah
Run Code Online (Sandbox Code Playgroud)

如您所见,我想要2个位置和3个可选参数.但是,当我尝试在终端中运行它时,它不会检查位置!如果我尝试:python script.py inputfile它将正常运行并在脚本无法找到inputString的值时输出错误.如果我尝试:python script.py xxx; 输出是:

usage script.py [-h] [-option1] [-option2] [-option3]
Run Code Online (Sandbox Code Playgroud)

任何人都可以解释为什么它不检查位置参数?

python optional-arguments argparse

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

将UTC时间转换为python datetime

我有以下格式的大量UTC时间戳: 2012-04-30T23:08:56+00:00 我想将它们转换为python datetime对象,但遇到了麻烦.

我的代码:

for time in data:
    pythondata[i]=datetime.strptime(time,"%y-%m-%dT%H:%M:%S+00:00")
Run Code Online (Sandbox Code Playgroud)

我收到以下错误:

ValueError: time data '2012-03-01T00:05:55+00:00' does not match format '%y-%m-%dT%H:%M:%S+00:00'
Run Code Online (Sandbox Code Playgroud)

看起来我的格式正确,为什么这不起作用?

python datetime utc rfc3339

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

如何设置标题(用户代理),检索网页,捕获重定向和接受cookie?

import urllib.request
url="http://espn.com"
f = urllib.request.urlopen(url)
contents = f.read().decode('latin-1')
q = f.geturl()
print(q)
Run Code Online (Sandbox Code Playgroud)

此代码将返回http://espn.go.com/,这是我想要的 - 重定向网站URL.看完Python文档,谷歌搜索等,我无法弄清楚如何:

  1. 捕获重定向的网站URL(已经工作)
  2. 在即将发出的请求上更改用户代理
  3. 接受网页可能要发回的任何Cookie

我怎么能在Python 3中做到这一点?如果有一个更好的模块urllib,我很好.

python urllib python-3.x

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