Python – 将列表转换为单值列表的元组




Python – 将列表转换为单值列表的元组

本文是我们尝试理解将列表转换为元组中的单值列表的各种方法的方法。我们将研究可能的Python编程以实现相同的结果。我们将根据输入列表的大小讨论实现细节、时间和空间复杂度以及每种方法的效率。具有基本技术背景的开发人员、数据科学家和普通读者将发现本文对于判断最佳方法适用于他们特定用例非常有益。

在Python中,将列表转换为一个由单值列表组成的元组并不是一个复杂的任务。本文将重点介绍这种转换的五种不同方法。记住,还有其他几种可能的方法,所以要继续探索。让我们根据实现逻辑、时间和空间复杂度来讨论每种方法。而且,读者将能够根据他们的特定要求判断最佳方法。

方法1:实现递归函数

递归是一种编程方法,其中一个函数调用自身(具有下一个用例),最后以终止递归调用的基本情况结束。



让我们来看代码:

示例

def tuple_singlelist(listInput):
    if not listInput:
        return ()
    else:
        return ([listInput[0]],) + tuple_singlelist(listInput[1:])

listDemo = [1,2,3,4,5]
output_tuple = tuple_singlelist(listDemo)

# Printing the input list and the output tuple of single lists
print("input list:", listDemo)
print("output tuple:", output_tuple)

输出

input list: [1, 2, 3, 4, 5]
output tuple: ([1], [2], [3], [4], [5])

在递归函数tuple_singlelist()中,我们以一个列表listInput作为输入。然后,我们通过if-else语句检查listInput是否为空。如果为真,则作为基本情况并退出递归,返回一个空元组。如果为假,即listInput不为空,则取listInput的第一个元素创建一个单值列表,并将其封装在一个元组中。然后,使用输入列表的切片listInput[1:]重新调用函数tuple_singlelist。

递归函数的时间复杂度是O(n2),其中n是列表输入的长度。空间复杂度也是O(n2),其中n是列表输入的长度。

方法2:使用列表推导和元组函数

将列表解析方法用于转换是最简单的方法之一。我们可以很容易地使用列表解析方法解析单个元素以形成由单值列表组成的列表。然后,将该列表转换为元组。让我们看一下我们的代码以了解更多:

示例

demo_list = [1,2,3,4,5]
#printing initial list
print("Initial List:"+ str(demo_list))

#Using list conversion and tuple() function
final_tuple = tuple([x] for x in demo_list)

#printing after tuple conversion
print("Final Tuple:"+ str(final_tuple))

输出

Initial List:[1, 2, 3, 4, 5]
Final Tuple:([1], [2], [3], [4], [5])

在这段代码中,[x] for x in demo_list命令从demo_list中获取单个元素,并将其组成单值列表。接下来,tuple()函数将所有形成的单值列表封装成一个元组。

递归函数的时间复杂度是O(n),其中n是列表输入的长度。空间复杂度也是O(n),其中n是列表输入的长度。

方法3:使用简单的for循环,tuple()和append()函数

这是一个简单的思维过程,我们可以用来解决这个问题。将一个列表拆分为单个元素,然后将单个元素放入一个元组中。

为了实现这一点,我们可以使用一个空列表来存储我们的值,通过将单个元素追加为列表来实现。迭代由for循环执行。一旦我们有了单值列表的列表,我们就可以用tuple()函数来创建元组。

让我们来看看代码:

示例

listInput = [1,2,3,4,5]

#printing initial list
print("Initial List:"+ str(listInput))

finalList=[]
for item in listInput:
    finalList.append([item])
outputTuple = tuple(finalList)

#printing after tuple conversion
print("Final Tuple:"+ str(outputTuple))

输出结果

Initial List:[1, 2, 3, 4, 5]
Final Tuple:([1], [2], [3], [4], [5])

因此,我们在上面的代码中所做的是创建了一个空列表。现在,使用for循环来迭代输入列表中的每个项。正如我们之前讨论的那样,append()的作用就在于此,它将这些个体元素在方括号[]关闭后传递,以形成一个单值列表的列表。然后,使用tuple函数将生成的列表转换为元组。

时间和空间复杂度与上一种方法相同,即O(n),其中n是输入列表的长度。

方式4:结合map()和lambda函数

map()是python中非常有用的函数,它帮助我们在对可迭代对象的每个项应用特定指令后进行迭代。



我们可以在map()中使用lambda表达式来实现所需的任务。让我们编写一个代码来尝试生成一个单值列表的元组。

示例

listInput = [1,2,3,4,5]

#printing initial list
print("Initial List:"+ str(listInput))

#implement map(lambda)
outputTuple = tuple(map(lambda ele: [ele], listInput))

#printing after tuple conversion
print("Final Tuple:"+ str(outputTuple))

输出

Initial List:[1, 2, 3, 4, 5]
Final Tuple:([1], [2], [3], [4], [5])

如果我们看一下我们的代码,我们会发现它只是一个简单的一行代码,map函数包含了lambda函数,为可迭代的每个元素提供了指令,它会被放在方括号[]中,即创建一个列表。map函数遍历listInput中的每个元素,将其传递给lambda函数。 函数的时间复杂度是O(n),空间复杂度也是O(n)。 方法5: 为tuple()创建生成器表达式 生成器表达式与列表解析类似,只是生成一个生成器对象,可以迭代生成值。 为了创建所需的元组,我们可以传递一个生成器表达式到tuple()函数中,从每个迭代的列表元素中创建一个单值列表。下面的代码将帮助我们更容易地理解,让我们看一下代码。 示例

listInput = [1,2,3,4,5]
#printing initial list
print("Initial List:"+ str(listInput))
outputTuple = tuple([item] for item in listInput)
#printing after tuple conversion
print("Final Tuple:"+ str(outputTuple))

输出

Initial List:[1, 2, 3, 4, 5]
Final Tuple:([1], [2], [3], [4], [5])

正如您所看到的,我们使用了生成器表达式,它会从给定列表的每个迭代项创建单值列表。将其传递到tuple()中,我们就得到了所需的输出。

时间复杂度和空间复杂度:O(𝑛)

结论

到目前为止,在本文中我们实现了五种不同的方法,但仍然有许多其他现有和可能的方法来实现相同的功能或输出。

Python作为一种非常高效的语言,在动态领域的应用使其非常强大。



Python 精选笔记
使用Python和ccxt库构建一个加密货币交易机器人使用Python和自然语言工具包(NLTK)构建聊天机器人使用Plan模块在Python中编写crontab文件使用Python和Requests库开发网络爬虫使用Python中的Whoosh库开发文本搜索引擎使用Python和scikit-learn开发机器学习模型使用Python和Plotly Dash创建基于Web的数据可视化仪表板使用Python控制树莓派GPIO引脚使用Python和Pandas库构建股票价格预测模型如何在Python中解析XML并计算特定节点属性的实例?如何在Python中解析本地HTML文件?如何按多列对PySpark DataFrame进行排序?如何在Pygame中移动游戏角色?如何在Python中同时打开两个文件?如何使用Python移动文件夹及其子文件夹的列表?如何使用Python将多个文件夹合并成一个文件夹?如何使用Python将多个Excel文件合并成一个单一文件?如何使用Python Pandas按照共同的键合并多个TSV文件?如何使用PIL将透明的PNG图片与另一张图片合并?Python中嵌套函数是如何工作的?Python中的全局变量和局部变量?在Python函数中如何使用全局变量?如何从Python对象中获取源代码?如何在Python中返回一个函数?如何在Python中安装matplotlib?Python - 分割包含散乱字符的字符串Python - 记录列表XORPython – 向记录的末尾添加数据Python - 键值大于K的记录在Python中垂直打印列表Python - 列表中字符串平均长度Python列表中的交替循环Python程序实现混淆词游戏Python-记录联合Python程序计算列表中元组的重复项Python程序:将字符串的字符转换为相反的大小写Python - 打印给定年份列表中的闰年数量Python - 打印所有子列表中的共同元素Python - 删除嵌套列表中的所有元素如何在Python列表中检查空格?在Python中引发异常到另一个异常Python字符串中的范围复制Python程序计算包含列表的列表中列表的数量修改给定Python列表中的重复值Python - 检查元素是否在指定范围内出现从Python的元组列表中删除所有字符串如何使用Pygame添加颜色呼吸效果?如何在Bokeh中添加颜色条如何在Bokeh中添加颜色选择器?使用Python程序显示带有星边框的数字半菱形图案Python使用ipaddress模块确定给定的IPv4地址是否为保留地址使用ipaddress模块的Python程序来确定给定的IP地址是公网还是私网Python程序通过平方和连接给定数字的奇数位数来创建一个OTPPython程序创建以零为中心的列表Python程序计算字符串中的字符数Python程序将米转换为码,反之亦然Python程序:统计文本文件中的元音、行数和字符数Python程序计算文本文件中的单词数量Python程序,用于计算文本文件中空格的数量将字典的值转换为字符串的Python程序Python程序将浮点数转换为指数Python程序将整数转换为指数Python程序将整数转换为罗马数字将整数列表转换为字符串列表的Python程序Python程序将XML转换为字典Python程序:通过重复键对应的值次数将字典转换为列表将Dict of list转换为CSV的Python程序使用正则表达式统计Python程序中大写字母、小写字母、特殊字符和数字值的个数Python元组的并集Python - 嵌套和混合列表中的类型转换Python - 将列表转换为单值列表的元组如何在Python中打印上标和下标?如何在Python中打印多个参数?如何在Plotly-Python中将图例定位在图表内部?如何使用Pandas绘制时序图表?如何使用SciPy在Python中绘制Ricker曲线?如何在Python列表中删除True值?如何使用Python将字典的值转换为绝对值?如何使用Python将字典转换为K个大小的字典?如何使用Python将浮点数舍入到2位小数?如何在Python中将Excel转换为CSV如何在Python中对元组进行索引和切片?如何在Python中判断一个对象是否有属性?在Python中创建实例对象如何使用Python获取城市的经纬度?如何在Python中获取整数输入?如何交换给定 NumPy 数组的列?如何使用NumPy抑制对小数的科学计数法使用?如何使用Python将XML数据存储到MySQL数据库中?如何在Pandas DataFrame中减去两列?如何在Pandas DataFrame中标准化数据?如何堆叠多个Pandas DataFrames?如何使用scikit-learn的train_test_split()函数拆分数据集如何在Python中分割数据以进行训练和测试,而不使用Sklearn在Python set中找到最大值和最小值Python程序:找到长方体的体积、表面积和空间对角线如何在Python程序中获取字符串的K个可能切片如何使用Altair在Python中制作密度图?生成一次性密码(OTP)的Python程序Python程序:找出数组中可被给定数整除的元素的XOR寻找巨大最大公约数(Jumbo GCD)子数组的Python程序如何在OpenCV Python中查找图像轮廓的边界矩形?如何在Python脚本所在的目录中打开文件?如何在Anaconda中安装Python包?如何在OpenCV Python中旋转图像?如何给定完整路径导入Python模块?如何在Python中从另一个函数调用变量?使用Python的Matplotlib在X轴上绘制日期如何在Python中不使用math模块进行平方根运算?如何在Python Tkinter中给Frame添加边框?如何从Python函数返回一个字典?Python程序获取元组中的第一个和最后一个元素如何求一个Python字典的值的总和?Python Pandas - 查找列的最大值并返回其对应的行值机器人流程自动化 - 简介机器学习中的逻辑回归损失函数如何从Python日期中减去一天?将物联网和机器学习相结合,使我们的未来更智能机器学习中的Boosting | Boosting和AdaBoost如何在Python中将时间戳字符串转换为datetime对象?如何在Python中将变量名转换为字符串?什么是Python中的.pyc文件?Python - 检查列表中的所有元素是否相同如何在Python Plotly中设置Y轴的范围?如何将Python日期转换为Unix时间戳?Python中的Turtle绘图编程如何在Python中的给定位置插入一个对象到列表中?如何在Python中进行日期验证?如何使用Python将两个图并排显示?在Python中的方法和函数之间的区别Python中的PYTHONPATH环境变量是什么?如何对Python日期字符串列表进行排序?在Python的Pandas中向现有的DataFrame中添加新列如何将Python元组转换为字典?Python - 使用Pandas读取没有标题的csv文件?如何使用OpenCV Python在图像中检测矩形和正方形?如何使用OpenCV在Python中改变图像的对比度和亮度?如何在Python中将日期时间转换为UTC时间戳?如何列出Python模块中的所有函数?Python程序查找字符串中的所有重复字符使用Python进行文件搜索