Python Can';t获取一个for循环作为列表理解

Python Can';t获取一个for循环作为列表理解,python,list-comprehension,Python,List Comprehension,这个for循环可以正常工作,但不能作为列表理解。 理解为每个迭代创建空元素。 有人能解释什么是错误的以及如何修复它吗 def GetAsciiList(): num_list = [] for num in range(32, 42, 1): num_list.append((str(num), chr(num)+" ")) return num_list def GetAsciiListLC(): num_list = [] num_l

这个for循环可以正常工作,但不能作为列表理解。 理解为每个迭代创建空元素。 有人能解释什么是错误的以及如何修复它吗

def GetAsciiList():
    num_list = []
    for num in range(32, 42, 1):
        num_list.append((str(num), chr(num)+" "))
    return num_list

def GetAsciiListLC():
    num_list = []
    num_list = [(num_list.append((str(num), chr(num)+" "))) for num in range(32, 42, 1)]
    return num_list

print GetAsciiList()
print GetAsciiListLC()

控制台输出:

[('32', '  '), ('33', '! '), ('34', '" '), ('35', '# '), ('36', '$ '), ('37', '% '), ('38', '& '), ('39', "' "), ('40', '( '), ('41', ') ')]
[None, None, None, None, None, None, None, None, None, None]

请考虑
GetAsciiListLC()
中的这一行:

num\u list.append((str(num),chr(num)+“”)
修改列表并返回
None

我想你想要的是:

def GetAsciiListLC():
    """ Return list of 2-tuples containing numbers and ASCII equivalents, both as strings. """
    return [(str(num), chr(num) + " ") for num in range(32, 42)]
有关从list.append()方法返回None的基本原理,请参见此问题:

GetAsciiListLC()中考虑这一行:

num\u list.append((str(num),chr(num)+“”)
修改列表并返回
None

我想你想要的是:

def GetAsciiListLC():
    """ Return list of 2-tuples containing numbers and ASCII equivalents, both as strings. """
    return [(str(num), chr(num) + " ") for num in range(32, 42)]
有关从list.append()方法返回None的基本原理,请参见此问题:

您可以编辑问题以格式化Python代码吗?Python对空格敏感,很难知道如何正确编辑这个问题。列表理解解析为列表。因此,您可能只需要
返回[(str(num),chr(num)+”“)范围内的num]
。如果在列表理解中追加,追加的结果,
None
将是列表中每个项目的值,如您所见。您可以编辑问题以格式化Python代码吗?Python对空格敏感,很难知道如何正确编辑这个问题。列表理解解析为列表。因此,您可能只需要
返回[(str(num),chr(num)+”“)范围内的num]
。如果在列表中追加,追加的结果,
None
将是列表中每个项目的值,如您所见。