如何将文件内容读取为一维列表,或转换嵌套列表为一维?
文件内容转一维列表的解决方法
一、直接读取生成一维列表
你之前的代码出现嵌套列表,是因为append()会把split()返回的整个列表作为单个元素添加到valuelist中。可以用两种方式直接生成一维列表:
方式1:使用列表推导式(更灵活)
先按换行分割内容,过滤掉空行,再排序得到你期望的顺序:
data_non_ods = my_non_ods_file.read() # 分割每行,去除空白,过滤空字符串 valuelist = [line.strip() for line in data_non_ods.split('\n') if line.strip()] # 按字符串排序,得到['sdsx', 'sds1', 'sds2', 'sds3'] valuelist.sort()
方式2:用extend()替代append()
extend()会把可迭代对象的每个元素逐个添加到列表中,而非整体添加:
valuelist = [] data_non_ods = my_non_ods_file.read() # split()默认按任意空白分割,自动忽略空内容 valuelist.extend(data_non_ods.split()) # 排序得到目标顺序 valuelist.sort()
二、将现有嵌套列表转为一维列表
如果已经得到了[['sdsx', 'sds1','sds3','sds2']]这种嵌套结构,可通过以下方法展开:
方法1:直接取嵌套列表的子元素
# 取外层列表的第一个(也是唯一的)子列表 valuelist = valuelist[0] valuelist.sort()
方法2:用列表推导式展开
valuelist = [item for sublist in valuelist for item in sublist] valuelist.sort()
方法3:用extend()展开
new_list = [] new_list.extend(valuelist[0]) valuelist = new_list valuelist.sort()
内容的提问来源于stack exchange,提问作者PK39565
相关产品推荐
相关产品推荐

