我根据空间将字符串分成列表。当元素值为“-”时,我想将其与下一个元素合并。
例如,
Impl
要转换为['x^3', 'x', '-', '4']
。
['x^3', 'x', '-4']
要转换为['-', 'x^3', 'x', '-', '4']
。
['-x^3', 'x', '-4']
答案 0 :(得分:5)
replace
的{{1}}方法将很有用:
str
这比使用s = "x^3 + x - 4"
new_s = s.replace('- ', '-').replace('+ ', '')
b = new_s.split(" ")
循环更优雅。
顺便说一句,如果可以使用列表理解,请避免使用for
的{{1}}循环和for
的{{1}},因为重复调用append
方法比列表理解要慢得多。
答案 1 :(得分:1)
通过for
循环,您可以执行以下操作:
l1 = ['x^3', 'x', '-', '4']
l2 = ['-','x^3', 'x', '-', '4']
def func(x):
new_x = []
temp = None
for i in x:
if temp:
i = temp+i
temp = None
if i == '-':
temp = "-"
continue
new_x.append(i)
return new_x
print(func(l1))
print(func(l2))
输出:
['x^3', 'x', '-4']
['-x^3', 'x', '-4']
答案 2 :(得分:0)
尝试一下:
def main(arr: list) -> list:
"""Combines '-' with next element in list"""
for i in range(len(arr)):
try:
if arr[i] == '-':
arr[i + 1] = '-' + arr[i + 1]
arr[i] = ''
except IndexError:
pass
while True:
if '' in arr:
arr.remove('')
else:
break
return arr
print(main(['-', 'x^3', 'x', '-', '4']))
还可以使用eval()进行计算:
b = "x**3 + x - 4"
x = 2
print(eval(b))