相关疑难解决方法(0)

将列表中的项连接到字符串

有没有更简单的方法将列表中的字符串项连接成一个字符串?

我可以使用该str.join()功能加入列表中的项目吗?

例如,这是输入['this','is','a','sentence'],这是所需的输出this-is-a-sentence

sentence = ['this','is','a','sentence']
sent_str = ""
for i in sentence:
    sent_str += str(i) + "-"
sent_str = sent_str[:-1]
print sent_str
Run Code Online (Sandbox Code Playgroud)

python string join list concatenation

478
推荐指数
7
解决办法
99万
查看次数

有什么理由不使用'+'连接两个字符串?

Python中常见的反模式是+在循环中连接一系列字符串.这很糟糕,因为Python解释器必须为每次迭代创建一个新的字符串对象,并最终获得二次时间.(在某些情况下,CPython的最新版本显然可以优化它,但是其他实现不能,因此不鼓励程序员依赖它.)''.join是正确的方法.

不过,我听人说(这里包括对堆栈溢出),你应该永远不会使用+字符串连接,而是始终使用''.join或格式字符串.我不明白为什么如果你只是连接两个字符串就是这种情况.如果我的理解是正确的,它不应该花费二次时间,我认为a + b比任何一个''.join((a, b))或更清晰,更可读'%s%s' % (a, b).

+用于连接两个字符串是一种好习惯吗?还是有一个我不知道的问题?

python anti-patterns string-concatenation

117
推荐指数
4
解决办法
18万
查看次数

拆分字符串,在字符串之间切换数字和字母字符

我正在解析一些标准格式类似的数据10 pizzas.有时,数据输入正确,我们最终可能会结束5pizzas而不是5 pizzas.在这种情况下,我想解析比萨饼的数量.

这种天真的做法是逐字符检查,构建一个字符串,直到我们达到非数字,然后将该字符串作为整数转换.

num_pizzas = ""
for character in data_input:
   if character.isdigit():
      num_pizzas += character
   else:
      break
num_pizzas = int(num_pizzas)
Run Code Online (Sandbox Code Playgroud)

不过,这非常笨重.是否有更简单的方法将字符串从数字切换为字母字符?

python

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

os.path.join()如何工作?

请帮我理解内置的os.path.join()函数是如何工作的.例如:

import os
print os.path.join('cat','dog') # 'cat/dog' no surprise here
print os.path.join('cat','dog').join('fish') # 'fcat/dogicat/dogscat/dogh'
Run Code Online (Sandbox Code Playgroud)

在Mac上(我猜Linux也是)os.name是posixpath的别名.所以查看posixpath.py模块,join()函数如下所示:

def join(a, *p):
"""Join two or more pathname components, inserting '/' as needed.
If any component is an absolute path, all previous path components
will be discarded.  An empty last part will result in a path that
ends with a separator."""
path = a
for b in p:
    if b.startswith('/'):
        path = b
    elif path == '' or path.endswith('/'):
        path +=  b
    else:
        path += …
Run Code Online (Sandbox Code Playgroud)

python macos path built-in

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

无法理解 django 教程中的一行

我正在编写官方 Django 教程,网址为https://docs.djangoproject.com/en/1.10/intro/tutorial03/。我无法理解这一行。有人可以帮我分解一下吗?

def index(request):
    latest_question_list = Question.objects.order_by('-pub_date')[:5]
    output = ', '.join([q.question_text for q in latest_question_list])
    return HttpResponse(output)
Run Code Online (Sandbox Code Playgroud)

编辑:用户说这不是一行代码。代码的格式化方式让人不清楚,因为它们使用大字体并且经常将单行分解为多行。这是它在网站上的格式:

Question.objects.order_by('-pub_date')[:5]
output = ', '.join([q.question_text for q 
in latest_question_list])
Run Code Online (Sandbox Code Playgroud)

输出行是缩进的,这让我相信它是同一行的一部分,但由于某种原因 Stack Overflow 不允许我这样做。

django

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

Python3元组和列表,打印出逗号分隔的字符串

如何以逗号分隔的字符串打印元组中的前三个元素(我正在尝试学习:字典和元组,所以我只是在玩它,这就是我一直在转换它的原因:))

tup = ("snake", 89, 9.63, "bookshelf", 1)
list(tup)
tup[1] = "cow"
tuple(tup)
Run Code Online (Sandbox Code Playgroud)

python tuples python-3.x

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