创建列表、追加数据并转换为元组:shortest cod

2024-09-25 02:27:30 发布

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

我有一个也许很愚蠢的问题,但却不知道怎么解决。 所以基本上我想做的是:

  • 创建列表
  • 向列表中添加项目(存储在第二个列表中)
  • 将列表转换为元组

所以我想我应该这样做:

anotherList = [2,5,8]
myTuple = tuple([1,2,3].extend(anotherList))

这不起作用,因为它抛出错误:

TypeError: 'NoneType' object is not iterable

这是有意义的,因为extend操作的结果不是列表。问题是我不能用一行代码,而只能用四行代码,比如:

anotherList = [2, 5, 8]
myList = [1, 2, 3]
myList.extend(anotherList)
myTuple = tuple(myList)

有没有办法简化这个代码?它看起来太长了!你知道吗


Tags: 项目代码列表objectis错误not元组
3条回答

您不想使用list.extend(),句点。如果要将列表显示(文字语法)与另一个列表连接起来,请使用+

myTuple = tuple([1, 2, 3] + anotherList)

或者您可以只转换anotherList并为元组添加前缀:

myTuple = (1, 2, 3) + tuple(anotherList)

在这里,Python编译器可以优化(1, 2, 3)并将其作为常量存储在代码对象中。初始元组只创建一次,并在所有执行中重用。你知道吗

list.extend()旨在通过对现有列表对象的引用来就地更新该列表对象,但是在列表文本上使用它意味着生成的扩展列表没有剩余的引用,并且会再次被丢弃。你知道吗

在Python3.5及更高版本中,还可以使用new iterable unpacking syntax

myTuple = (1, 2, 3, *anotherlist)

注意这里不需要tuple()调用,并且支持任何iterable类型(不仅仅是列表)。Python2.7已经到了它的最后一天,您需要开始计划离开它。你知道吗

您可以添加列表:

result = tuple([1,2,3] + [4,5,6])

所以是这样的:

anotherList = [2, 5, 8]
myList = [1, 2, 3]

myTuple = tuple(myList + anotherList)

不清楚,但是。。。你知道吗

试试这个:

l=[2,5,8]
print(tuple([1,2,3]+l))

可以通过+连接

或者可以在python3中执行*(解包):

print((*l, 1,2,3))

或者可以从itertools执行chain

import itertools
print(tuple(itertools.chain(l, [1,2,3])))

或来自heapqmerge

from heapq import merge
print(tuple(merge(l,[1,2,3])))

add形式operator

import operator
print(tuple(operator.add(l, [1,2,3])))

相关问题 更多 >