簡體   English   中英

加入 Python 列表中的元素

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM