在list python中连接字符串以提供不同的输出

2024-09-29 00:12:10 发布

您现在位置:Python中文网/ 问答频道 /正文

我有下面显示的字符串列表。我想将每个字符串与其他字符串组合起来,以获得唯一的组合。你知道吗

listTags = [ "TOT" , "WBA", "BUR", "SOU", "HUL", "SUN", "STK", "SWA", "ARS", "CHE", "MUN", "WHU", "WAT", "MID"
  "WHU", "CRY", "LEI", "EVE", "MCI", "LIV"].

所以对于上面的列表,应该是#TOTWBA,#TOTBUR,#TOTSOU…等等。我如何在python中做到这一点?你知道吗


Tags: 字符串列表chesunarsswastktot
3条回答
import itertools

listTags = [ "TOT" , "WBA", "BUR", "SOU", "HUL", "SUN", "STK", "SWA", "ARS", "CHE", "MUN", "WHU", "WAT", "MID", "WHU", "CRY", "LEI", "EVE", "MCI", "LIV"]

combinations = ['#' + x + y for x, y in itertools.combinations(listTags, 2)]

print(combinations)

输出

['#TOTWBA', '#TOTBUR', '#TOTSOU', '#TOTHUL', '#TOTSUN', '#TOTSTK', '#TOTSWA', '#TOTARS', '#TOTCHE', '#TOTMUN', '#TOTWHU', '#TOTWAT', '#TOTMID', '#TOTWHU', '#TOTCRY', '#TOTLEI', '#TOTEVE', '#TOTMCI', '#TOTLIV', '#WBABUR', '#WBASOU', '#WBAHUL', '#WBASUN', '#WBASTK', '#WBASWA', '#WBAARS', '#WBACHE', '#WBAMUN', '#WBAWHU', '#WBAWAT', '#WBAMID', '#WBAWHU', '#WBACRY', '#WBALEI', '#WBAEVE', '#WBAMCI', '#WBALIV', '#BURSOU', '#BURHUL', '#BURSUN', '#BURSTK', '#BURSWA', '#BURARS', '#BURCHE', '#BURMUN', '#BURWHU', '#BURWAT', '#BURMID', '#BURWHU', '#BURCRY', '#BURLEI', '#BUREVE', '#BURMCI', '#BURLIV', '#SOUHUL', '#SOUSUN', '#SOUSTK', '#SOUSWA', '#SOUARS', '#SOUCHE', '#SOUMUN', '#SOUWHU', '#SOUWAT', '#SOUMID', '#SOUWHU', '#SOUCRY', '#SOULEI', '#SOUEVE', '#SOUMCI', '#SOULIV', '#HULSUN', '#HULSTK', '#HULSWA', '#HULARS', '#HULCHE', '#HULMUN', '#HULWHU', '#HULWAT', '#HULMID', '#HULWHU', '#HULCRY', '#HULLEI', '#HULEVE', '#HULMCI', '#HULLIV', '#SUNSTK', '#SUNSWA', '#SUNARS', '#SUNCHE', '#SUNMUN', '#SUNWHU', '#SUNWAT', '#SUNMID', '#SUNWHU', '#SUNCRY', '#SUNLEI', '#SUNEVE', '#SUNMCI', '#SUNLIV', '#STKSWA', '#STKARS', '#STKCHE', '#STKMUN', '#STKWHU', '#STKWAT', '#STKMID', '#STKWHU', '#STKCRY', '#STKLEI', '#STKEVE', '#STKMCI', '#STKLIV', '#SWAARS', '#SWACHE', '#SWAMUN', '#SWAWHU', '#SWAWAT', '#SWAMID', '#SWAWHU', '#SWACRY', '#SWALEI', '#SWAEVE', '#SWAMCI', '#SWALIV', '#ARSCHE', '#ARSMUN', '#ARSWHU', '#ARSWAT', '#ARSMID', '#ARSWHU', '#ARSCRY', '#ARSLEI', '#ARSEVE', '#ARSMCI', '#ARSLIV', '#CHEMUN', '#CHEWHU', '#CHEWAT', '#CHEMID', '#CHEWHU', '#CHECRY', '#CHELEI', '#CHEEVE', '#CHEMCI', '#CHELIV', '#MUNWHU', '#MUNWAT', '#MUNMID', '#MUNWHU', '#MUNCRY', '#MUNLEI', '#MUNEVE', '#MUNMCI', '#MUNLIV', '#WHUWAT', '#WHUMID', '#WHUWHU', '#WHUCRY', '#WHULEI', '#WHUEVE', '#WHUMCI', '#WHULIV', '#WATMID', '#WATWHU', '#WATCRY', '#WATLEI', '#WATEVE', '#WATMCI', '#WATLIV', '#MIDWHU', '#MIDCRY', '#MIDLEI', '#MIDEVE', '#MIDMCI', '#MIDLIV', '#WHUCRY', '#WHULEI', '#WHUEVE', '#WHUMCI', '#WHULIV', '#CRYLEI', '#CRYEVE', '#CRYMCI', '#CRYLIV', '#LEIEVE', '#LEIMCI', '#LEILIV', '#EVEMCI', '#EVELIV', '#MCILIV']

这个答案依赖于itertools.combinations的使用:

itertools.combinations(iterable, r)

Return r length subsequences of elements from the input iterable.

Combinations are emitted in lexicographic sort order. So, if the input iterable is sorted, the combination tuples will be produced in sorted order.

Elements are treated as unique based on their position, not on their value. So if the input elements are unique, there will be no repeat values in each combination.

您可以使用组合(双关语)或itertools.combinations()set()来获得所有唯一的组合:

>>> import itertools
>>> 
>>> listTags = [ "TOT" , "WBA", "BUR", "SOU", "HUL", "SUN", "STK", "SWA", 
...                  "ARS", "CHE", "MUN", "WHU", "WAT", "MID" "WHU", "CRY", "LEI", 
...                  "EVE", "MCI", "LIV"]
>>> 
>>> combinations = set('#{pair[0]}{pair[1]}'.format(pair=pair) for pair in itertools.combinations(listTags, 2))
>>> combinations
set(['#TOTWBA', '#BURMUN', '#HULLEI', '#WBASUN', '#HULWHU', '#SUNSWA', '#BURSWA', '#TOTCRY', '#MUNCRY', '#SOUSTK', '#WATCRY', '#SUNLIV', '#STKCHE', '#STKCRY', '#TOTSUN', '#LEILIV', '#EVELIV', '#STKSWA', '#TOTBUR', '#EVEMCI', '#SOUWAT', '#SUNEVE', '#SWAWAT', '#LEIMCI', '#TOTCHE', '#MUNMCI', '#WBASTK', '#SUNLEI', '#BURLEI', '#BURMCI', '#SOUCRY', '#BURWHU', '#HULWAT', '#WHUEVE', '#WBALIV', '#ARSMCI', '#SOUSUN', '#MUNEVE', '#BURSOU', '#WHUMIDWHU', '#ARSLEI', '#SWAMIDWHU', '#SOUARS', '#WBABUR', '#STKLIV', '#TOTLIV', '#TOTARS', '#TOTMCI', '#SWAEVE', '#WATEVE', '#SWAMCI', '#WHULIV', '#MIDWHULEI', '#WBAEVE', '#WBASWA', '#SWALIV', '#CHEMCI', '#STKMUN', '#BURSUN', '#CRYLIV', '#TOTSWA', '#WHUMCI', '#MUNLIV', '#HULMIDWHU', '#SOUEVE', '#MUNMIDWHU', '#CRYLEI', '#WBALEI', '#HULEVE', '#WBAWHU', '#WBASOU', '#SOUCHE', '#WATLEI', '#SWAWHU', '#BURARS', '#CHECRY', '#HULSWA', '#SUNSTK', '#SOULIV', '#MUNWAT', '#SOUMCI', '#SUNCRY', '#ARSMIDWHU', '#MUNWHU', '#STKWAT', '#SUNMIDWHU', '#WBAHUL', '#SOUMIDWHU', '#STKWHU', '#CHELIV', '#WHUCRY', '#BURCHE', '#HULLIV', '#SOUMUN', '#HULCRY', '#TOTLEI', '#STKLEI', '#HULMCI', '#TOTMIDWHU', '#HULSTK', '#SWAARS', '#MUNLEI', '#WBAMIDWHU', '#WATMCI', '#ARSMUN', '#TOTWAT', '#WATLIV', '#CHEMUN', '#BURLIV', '#MCILIV', '#TOTEVE', '#ARSCHE', '#CRYMCI', '#CHEEVE', '#BURSTK', '#HULSUN', '#WATMIDWHU', '#WBAWAT', '#LEIEVE', '#STKMCI', '#WBACHE', '#SUNARS', '#TOTHUL', '#ARSLIV', '#SWAMUN', '#SWACRY', '#SUNMCI', '#TOTSOU', '#ARSWAT', '#WHUWAT', '#ARSCRY', '#SOUHUL', '#HULARS', '#WHULEI', '#BURWAT', '#SUNCHE', '#MIDWHUMCI', '#CHEWHU', '#TOTSTK', '#BURCRY', '#WBAARS', '#MIDWHUEVE', '#CRYEVE', '#STKMIDWHU', '#CHEWAT', '#ARSEVE', '#CHELEI', '#WBAMCI', '#SUNWAT', '#WBACRY', '#BURHUL', '#TOTMUN', '#MIDWHULIV', '#STKARS', '#STKEVE', '#HULCHE', '#SWACHE', '#SUNMUN', '#HULMUN', '#SOUSWA', '#SOUWHU', '#SOULEI', '#BURMIDWHU', '#WBAMUN', '#SUNWHU', '#TOTWHU', '#BUREVE', '#SWALEI', '#ARSWHU', '#MIDWHUCRY', '#CHEMIDWHU'])
>>> 

这个应该有用。你知道吗

result = [i+j for i in listTags for j in listTags if i != j]

示例:

listTags = [ "TOT" , "WBA", "BUR", "SOU"]
result = [i+j for i in listTags for j in listTags if i != j]
print result

输出:

['TOTWBA', 'TOTBUR', 'TOTSOU', 'WBATOT', 'WBABUR', 'WBASOU', 'BURTOT', 'BURWBA', 'BURSOU', 'SOUTOT', 'SOUWBA', 'SOUBUR']

相关问题 更多 >