我正在从事我的第一个编码项目,即制作文本编码器。完成后,我计划制作与之配对的解码器。现在,我很难让两个列表合并/重叠。抱歉,如果我要显示的内容具有引用它的真实名称,我是编码新手,仍然学习很多东西。
list1 = [20.0, 'X', 'X', 46.0, 0.0, 18.0, 'X', 40.0]
list2 = ['Y', 31.0, 45.0, 'Y', 'Y', 'Y', 47.0, 'Y']
我需要的输出是:
list3 = [20.0, 31.0, 45.0, 46.0, 0.0, 18.0, 47.0, 40.0]
两个列表都具有相等数量的值,我需要将它们组合成一个列表,按当前顺序保留数字,并完全消除“ X”和“ Y”。
答案 0 :(得分:2)
在列表理解中将<!doctype html>
<html class="no-js" lang="">
<head>
<meta charset="utf-8">
<meta http-equiv="x-ua-compatible" content="ie=edge">
<title></title>
<meta name="description" content="">
<meta name="viewport" content="width=device-width, initial-scale=1">
<script type="text/javascript" src="http://example.com/wp-includes/js/jquery/jquery.js?ver=1.12.4"></script>
</head>
<body>
<form action="/form-action" method="GET">
<input id="autoaddress" name="address" type="text" placeholder="Address">
<button class="button button__primary">Show Address</button>
</form>
<script type="text/javascript" src="http://example.com/wp-content/themes/divi/scripts/custom.js"></script>
<!-- where initmap function exists -->
<script type="text/javascript" src="https://maps.googleapis.com/maps/api/js?key=some_valid_random_key&libraries=places%2Cgeometry&callback=initMap&ver=1"></script>
</body>
</html>
与zip
一起使用:
isinstance
答案 1 :(得分:1)
list1 = [20.0, 'X', 'X', 46.0, 0.0, 18.0, 'X', 40.0]
list2 = ['Y', 31.0, 45.0, 'Y', 'Y', 'Y', 47.0, 'Y']
list3 = []
for x in range(len(list1)):
if isinstance(list1[x], float):
list3.append(list1[x])
else:
list3.append(list2[x])
print(list3)
输出:-
[20.0, 31.0, 45.0, 46.0, 0.0, 18.0, 47.0, 40.0]
答案 2 :(得分:1)
正如@Austin所说的,使用zip
来组合几个相同大小的列表。
如果您是开发中的新手,这里的版本会更容易理解
def get_number(item1, item2):
if item1 in ['X', 'Y']:
return item2
else:
return item1
[get_number(x, y) for x, y in zip(list1, list2)]
输出:-
[20.0, 31.0, 45.0, 46.0, 0.0, 18.0, 47.0, 40.0]
答案 3 :(得分:0)
为什么不max
和isinstance
:
print([max(i, key=lambda x: isinstance(x, float)) for i in zip(list1, list2)])
输出:
[20.0, 31.0, 45.0, 46.0, 0.0, 18.0, 47.0, 40.0]
答案 4 :(得分:-2)
list3 = [x if not str(x).isalpha() else list2[i] for i, x in enumerate(list1)]
已验证
答案 5 :(得分:-2)
这是一个建议,如果您不太在意合并列表的顺序
list1 = [20.0, 'X', 'X', 46.0, 0.0, 18.0, 'X', 40.0]
list2 = ['Y', 31.0, 45.0, 'Y', 'Y', 'Y', 47.0, 'Y']
a = list1 + list2
a = [x for x in a if not isinstance(x, str)]
>>>a
[20.0, 46.0, 0.0, 18.0, 40.0, 31.0, 45.0, 47.0]