有没有更简单的方法将列表中的字符串项连接成一个字符串?
我可以使用该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控制台代码片段将告诉所有内容:
>>> class Test:
... def __str__(self):
... return 'asd'
...
>>> t = Test()
>>> print(t)
asd
>>> l = [Test(), Test(), Test()]
>>> print(l)
[__main__.Test instance at 0x00CBC1E8, __main__.Test instance at 0x00CBC260,
__main__.Test instance at 0x00CBC238]
Run Code Online (Sandbox Code Playgroud)
基本上我想asd在打印列表时打印三个字符串.我也试过,pprint但它给出了相同的结果.
我正在尝试实现一个懒惰评估的str类.我现在所拥有的就像是一样
class LazyString(object):
__class__ = str
def __init__(self, func):
self._func = func
def __str__(self):
return self._func()
Run Code Online (Sandbox Code Playgroud)
在大多数情况下,它可以正常工作(除了我的目的),除了一个str.join:
' '.join(['this', LazyString(lambda: 'works')])
Run Code Online (Sandbox Code Playgroud)
失败了
TypeError: sequence item 1: expected string, LazyString found
Run Code Online (Sandbox Code Playgroud)
经过一番探索后,似乎没有任何神奇的功能.join似乎在核心实现中是硬编码的,只有有限的内置类型的实例可以使它工作而不是实际的str.
那么我真的没有选择,或者还有其他我不知道的方式吗?
这是我第一次在这个网站上寻求帮助.我在这里寻找答案,但没有什么能真正为我清除.
我正在努力学习Python.我在"课堂"一章.以下代码:
class Character:
def __init__(self, name, initial_health):
self.name = name
self.health = initial_health
self.inventory = []
def __str__(self):
s = "Name: " + self.name
s += "| Health: " + str(self.health)
s += "| Inventory: " + str(self.inventory)
return s
def grab(self, item):
self.inventory.append(item)
me = Character("vic", 37)
me.grab("pencil")
me.grab("paper")
print str(me)
Run Code Online (Sandbox Code Playgroud)
...生产:
Name: vic| Health: 37| Inventory: ['pencil', 'paper']
Run Code Online (Sandbox Code Playgroud)
但是下面的代码,在我看来非常相似,打印出内存位置而不是变量本身:
import random
SUITS = ['C', 'S', 'H', 'D']
RANKS = ['A', '2', '3', '4', '5', '6', '7', '8', …Run Code Online (Sandbox Code Playgroud)