以优化方式在列表中的双引号内拆分字符串?
Split string within double quotes in list in optimized way?
这里是输入
['not,equal','gold,copy','equity','ex','influence']
应用拆分和替换等功能后
这样的输出
['not','equal','gold','copy','equity','ex','influence']
问题是,如果我输入更多的输入,将需要更多的时间来更改输出。我申请了循环。有什么办法可以优化吗?
tag=input()
tag_list=[]
tag_list.append(tag)
print(tag_list)
hi=[]
for i in range(len(tag_list)):
hi.append(tag_list[i].split(','))
print(hi)
尝试列表理解:
input_ = ['not,equal','gold,copy','equity','ex','influence']
output = [item for item in [i.split(",") for i in input_] for item in item]
结果:
['not', 'equal', 'gold', 'copy', 'equity', 'ex', 'influence']
列表理解等同于:
input_ = ['not,equal','gold,copy','equity','ex','influence']
output = []
for item in input_:
for sub_item in item.split(","):
output.append(sub_item)
如果 ['not,equal','gold,copy','equity','ex','influence']
是您对 input()
方法的输入,请使用 ast
模块的 literal_eval
方法转换为 python 列表。
我在拆分标签时使用了列表推导式,functool
将列表展平
import operator
import functools
import ast
tag = input() # ['not,equal','gold,copy','equity','ex','influence']
tag_list = ast.literal_eval(tag)
# tag_list.append(tag)
print("tag_list: ", tag_list)
hi = [tags.split(",") for tags in tag_list]
print("hi: ", hi)
hi_flatten = functools.reduce(operator.concat, hi)
print("hi_flatten: ", hi_flatten)
输出:
tag_list: ['not,equal', 'gold,copy', 'equity', 'ex', 'influence']
hi: [['not', 'equal'], ['gold', 'copy'], ['equity'], ['ex'], ['influence']]
hi_flatten: ['not', 'equal', 'gold', 'copy', 'equity', 'ex', 'influence']
这里是输入
['not,equal','gold,copy','equity','ex','influence']
应用拆分和替换等功能后
这样的输出
['not','equal','gold','copy','equity','ex','influence']
问题是,如果我输入更多的输入,将需要更多的时间来更改输出。我申请了循环。有什么办法可以优化吗?
tag=input()
tag_list=[]
tag_list.append(tag)
print(tag_list)
hi=[]
for i in range(len(tag_list)):
hi.append(tag_list[i].split(','))
print(hi)
尝试列表理解:
input_ = ['not,equal','gold,copy','equity','ex','influence']
output = [item for item in [i.split(",") for i in input_] for item in item]
结果:
['not', 'equal', 'gold', 'copy', 'equity', 'ex', 'influence']
列表理解等同于:
input_ = ['not,equal','gold,copy','equity','ex','influence']
output = []
for item in input_:
for sub_item in item.split(","):
output.append(sub_item)
如果 ['not,equal','gold,copy','equity','ex','influence']
是您对 input()
方法的输入,请使用 ast
模块的 literal_eval
方法转换为 python 列表。
我在拆分标签时使用了列表推导式,functool
将列表展平
import operator
import functools
import ast
tag = input() # ['not,equal','gold,copy','equity','ex','influence']
tag_list = ast.literal_eval(tag)
# tag_list.append(tag)
print("tag_list: ", tag_list)
hi = [tags.split(",") for tags in tag_list]
print("hi: ", hi)
hi_flatten = functools.reduce(operator.concat, hi)
print("hi_flatten: ", hi_flatten)
输出:
tag_list: ['not,equal', 'gold,copy', 'equity', 'ex', 'influence']
hi: [['not', 'equal'], ['gold', 'copy'], ['equity'], ['ex'], ['influence']]
hi_flatten: ['not', 'equal', 'gold', 'copy', 'equity', 'ex', 'influence']