【发布时间】:2023-03-17 08:57:02
【问题描述】:
我有一个例子:
li = [['b', 'b', 'c', '3.2', 'text', '3', '5', '5'], ['a', 'w', '3', '4'], ['a', 'x', '3', '4'],['a','b'],['312','4']]
a = 0
b = []
c = []
count = []
for x in range(len(li)):
for a in range(len(li[x])):
if li[x][a].isalpha():
a += 1
elif not li[x][a].isalpha() and li[x][a + 1].isalpha():
a += 1
else:
break
i = (len(li[x]) - a)
b.extend([' '.join(li[x][0:a])])
b.extend(li[x][a::])
count.append(i)
for x in range(len(count)):
a = count[x] + 1
z = (sum(count[:x]))
if x == 0:
c.append(b[:a])
else:
c.append(b[a+1::z])
print(c)
我在li 列表中有各种项目,并且列表本身的长度不是恒定的。
如果数组中的任何元素是一个字符串,或者如果两个字符串之间有其他符号,它会将所有内容组合成一个元素 - 这个连接可以按我的意愿工作。
我想保留现有结构。例如,现在的输出如下所示:
[['b b c 3.2 text', '3', '5', '5'], ['a w', 'a x', 'a b', '4'], ['a w', '4'], ['5', '4'], ['a w', '']]
但它应该是这样的:
[['b b c 3.2 text', '3', '5', '5'],['aw','3','4'],['ax','3','4'],['ab'],['312','4']
当然,我发送的代码不能正常工作 - 我想到了一个解决方案,但我仍然有一些问题 - 我不知道如何将范围添加到此列表中 c - 我尝试拉长列表中的元素为count,但它对我也不起作用-也许这是一个糟糕的解决方案?也许这个扩展b 不是最好的解决方案?也许使用这么多“转换”并创建新列表没有意义?
给我一些建议。
【问题讨论】:
-
如果字符串之间有数字怎么办?
-
在执行过程中找到变量状态不符合预期的第一个点并说出原因。 (调试基础。)
-
@komatiraju032 如果一个数字在字符串之间,它应该被附加 - 但我认为我不会有像这样的工作连接的其他情况。我只是想保持原来的 post join 结构,但我不知道具体该怎么做。
-
['a', 'b', 1, 2, 3, 4, 'c', 5, 'd']的输出是什么? -
@philipxy 您是否提出了一个带有一些 True / False 标志的解决方案,然后更改此列表?我考虑过,但这个解决方案可能也与计算一个列表中应该包含的元素数量有关,但我仍然有问题。