[英]Joining elements in Python list
給定一個字符串,說s='135'
和一個列表,說A=['1','2','3','4','5','6','7']
,我怎么能將列表中也在 's'(s 的一個數字)中的值與其他元素分開,並連接這些其他元素。 此示例中的輸出應為: A=['1','2','3','4','5','67']
。 另一個例子: s='25'
A=['1','2','3','4','5','6','7']
輸出: A=['1','2','34','5','67']
有沒有辦法在沒有任何導入語句的情況下做到這一點(這樣我就可以更好地理解 Python 以及它是如何工作的)?
我對編程很陌生,所以任何幫助將不勝感激!
(請注意:這是我試圖解決的一個更大問題的一部分)。
您可以將itertools.groupby
與測試您號碼中的成員資格(轉換為字符串)的密鑰一起使用。 這將根據元素是否在s
對元素進行分組。 列表推導式將作為字符串加入組。
from itertools import groupby
A=['1','2','3','4','5','6','7']
s=25
# make it a string so it's easier to test for membership
s = str(s)
["".join(v) for k,v in groupby(A, key=lambda c: c in s)]
# ['1', '2', '34', '5', '67']
編輯:艱難的道路
您可以遍歷列表並跟蹤看到的最后一個值。 這將讓您測試是否需要將新字符串附加到列表中,或將字符附加到最后一個字符串。 (仍然 itertools 更干凈):
A=['1','2','3','4','5','6','7']
s=25
# make it a string
s = str(s)
output = []
last = None
for c in A:
if last is None:
output.append(c)
elif (last in s) == (c in s):
output[-1] = output[-1] + c
else:
output.append(c)
last = c
output # ['1', '2', '34', '5', '67']
對@Mark 的回答有點扭曲?
我認為這產生了結果。
from itertools import groupby
A=['1','2','3','4','5','6','7']
s=25
# make it a string so it's easier to test for membership
s = str(s)
print(["".join(v) for k,v in groupby(A, key=lambda c: c in s) if str(k) not in s ])
# ['1', '2', '34', '5', '67']
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.