以优化方式在列表中的双引号内拆分字符串?

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']