python - 如何在列表右侧添加两个数字
问题描述
我正在尝试创建一个列表并根据长度添加或说合并列表左侧的数字,如果它们相似的话,并且在它们的位置添加一个零。我附在下面的代码。但是当我尝试为右侧做时,就像合并应该发生在右侧,它没有发生。
例如:
[2,0,2,4] -> [4,4,0,0] ---- for left merge
[2,0,2,4] -> [0,0,4,4] ---- for right merge
def try_merge(ol):
temp_list=[]
final_list=[]
for e in ol:
if e !=0:
temp_list.append(e)
while len(temp_list) < len(ol):
temp_list.append(0)
count=0
var=0
if len(temp_list)%2==0:
temp_list.append(0)
while count <len(temp_list) - 1:
if temp_list[count]==temp_list[count+1]:
add = 2 *temp_list[count]
final_list.append(add)
count=count+2
else:
var=var+1
final_list.append(temp_list[count])
count=count+1
if count< len(temp_list):
final_list.append(temp_list[count])
fcount=len(final_list)
ocount=len(ol)
while fcount<ocount:
final_list.append(0)
fcount=fcount+1
if var==len(ol):
temp_list.pop()
return temp_list
else:
return final_list
a=[2,2,0,4]
b=try_merge(a)
print(b)
解决方案
您编写的代码基本上说明了将元素添加到列表的末尾,也就是说,它适用于合并左侧。要正确合并,您需要将其更改为相反的内容。我会尽量让代码尽可能接近你的:
def merge_right(ol):
temp_list=[]
final_list=[]
for e in ol:
if e !=0:
temp_list.append(e)
while len(temp_list) < len(ol):
temp_list.insert(0,0)
count=0
var=0
if len(temp_list)%2==0:
temp_list.insert(0,0)
N = len(temp_list) - 1
while N-count > 0:
v = N - count
if temp_list[v]==temp_list[v-1]:
add = 2 *temp_list[v]
final_list.insert(0,add)
count=count+2
else:
var=var+1
final_list.insert(0,temp_list[v])
count=count+1
if count < len(temp_list):
final_list.insert(0, temp_list[N-count])
fcount=len(final_list)
ocount=len(ol)
while fcount<ocount:
final_list.insert(0,0)
fcount=fcount+1
if var==len(ol):
temp_list.pop(0)
return temp_list
else:
return final_list
a=[2,2,0,4]
b=merge_right(a)
print(b)
# [0, 0, 4, 4]
推荐阅读
- elasticsearch - 如何在过滤器(术语)查询中添加多个字段以模拟 ElasticSearch 中的 OR
- c - 如何从 C 中的用户输入正确读取文件?
- laravel - 完整性约束违规:1452 无法添加或更新子行:外键约束失败
- database - 如何在列可能随每个新行更改的上下文中设计数据库表
- python - Webbots Python3“ModuleNotFound”错误MacOS
- tfs - 我们如何在门控签入期间获取搁置集名称并将其分配给 tfs 构建任务中的变量
- visual-studio - Visual Studio 2019 声称我的解决方案中的大多数 SSAS 项目都是“不兼容的”
- google-cloud-platform - Pyspark:将 csv 写入 Google Cloud Storage
- symfony - 重做 symfony 上的所有迁移
- c# - X509Certificate2:判断证书私钥是否属于硬件设备,是否需要PIN