有没有更简单的方法将列表中的字符串项连接成一个字符串?
我可以使用该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中常见的反模式是+在循环中连接一系列字符串.这很糟糕,因为Python解释器必须为每次迭代创建一个新的字符串对象,并最终获得二次时间.(在某些情况下,CPython的最新版本显然可以优化它,但是其他实现不能,因此不鼓励程序员依赖它.)''.join是正确的方法.
不过,我听人说(这里包括对堆栈溢出),你应该永远不会使用+字符串连接,而是始终使用''.join或格式字符串.我不明白为什么如果你只是连接两个字符串就是这种情况.如果我的理解是正确的,它不应该花费二次时间,我认为a + b比任何一个''.join((a, b))或更清晰,更可读'%s%s' % (a, b).
+用于连接两个字符串是一种好习惯吗?还是有一个我不知道的问题?
我正在解析一些标准格式类似的数据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)
不过,这非常笨重.是否有更简单的方法将字符串从数字切换为字母字符?
请帮我理解内置的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) 我正在编写官方 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 不允许我这样做。
如何以逗号分隔的字符串打印元组中的前三个元素(我正在尝试学习:字典和元组,所以我只是在玩它,这就是我一直在转换它的原因:))
tup = ("snake", 89, 9.63, "bookshelf", 1)
list(tup)
tup[1] = "cow"
tuple(tup)
Run Code Online (Sandbox Code Playgroud)