list.extend()导致列表逐个字符。

2024-10-06 15:28:24 发布

您现在位置:Python中文网/ 问答频道 /正文

def commandTaskList(self, schid, targetMode, toID, fromID, params=""):
    import psutil
    msg = []
    for p in psutil.process_iter():
        try:
            _p = str(p.as_dict(attrs=['name'])['name'])
            ts3lib.logMessage(_p, ts3defines.LogLevel.LogLevel_ERROR, "PyTSon", 0)
            if ".exe" in _p.lower(): msg.extend(_p)
        except psutil.Error: pass
    ts3lib.logMessage(str(msg), ts3defines.LogLevel.LogLevel_ERROR, "PyTSon", 0)
    msg = '\n'.join(sorted(msg))
    self.answerMessage(schid, targetMode, toID, fromID, msg)

这是我的代码,第一个logMessage()显示:

1/28/2017 04:32:30  PyTSon  Error   RemindersServer.exe 
1/28/2017 04:32:30  PyTSon  Error   AutoHotkey.exe  
1/28/2017 04:32:30  PyTSon  Error   raptr_ep64.exe  

第二个显示:

1/28/2017 04:32:30  PyTSon  Error   ['w', 'i', 'n', 'l', 'o', 'g', 'o', 'n', ...]   

Tags: nameinselfmsgerrorexepsutilloglevel
2条回答

以下是list.extend()文档字符串:

Docstring: L.extend(iterable) extend list by appending elements from the iterable

Type: builtin_function_or_method

字符串被认为是一个字符序列,因此它是一个iterable。你知道吗

a.extend(b)b的每个元素附加到a。因为在您的例子中b是一个字符串,b的每个字符都作为一个单独的项附加到a。你需要的是a.append(b)a.extend([b])。你知道吗

使用[<your_list>].append("your string")[<you_list>].extend(["your string as a list of one element"])

str是一种序列数据类型,非常类似于list。考虑这个例子: >>> [1, 2, 3].extend([4, 5, 6]) [1, 2, 3, 4, 5, 6]

同样的规则也适用于单个字符作为元素的str。你知道吗

相关问题 更多 >