我只想为我的lis上的每个元素得到相同的索引字母

2024-09-30 10:40:57 发布

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

例如:

a = "pandaxngeqrymtso-ezmlaesowxaqbujl-noilktxreecytrql-gskaboofsfoxdtei-utsmakotufodhlrd-iroachimpanzeesa-nintrwflyrkhcdum-jcecahkktiklsvhr-mhvsbaykagodwgca-koalatcwlkfmrwbb-jsrrfdolphinuyt"

a = a.split("-") 

mylist = []

word = ""

while i < len(a[0]): #16

      for elem in a:
        word+= elem[i]
  mylist.append(kelime)

  i += 1

  word = "" 

我只想要一个包含“penguinjmhkj,azostrichos…”的列表,但是我得到了一个索引错误。 我能做什么


Tags: wordsplitelemmylistpandaxngeqrymtsoezmlaesowxaqbujljcecahkktiklsvhrjsrrfdolphinuyt
3条回答

你可以试试这个:

>>> word = [''.join(letters) for letters in zip(*(list(word) for word in a.split('-')))]
>>> word
['penguinjmkj',
 'azostrichos',
 'nmiksonevar',
 'dllamatcslr',
 'aakbacrabaf',
 'xetokhwhatd',
 'nsxooifkyco',
 'gorftmlkkwl',
 'ewesupytalp',
 'qxeffarigkh',
 'racoonkkofi',
 'yqyxdzhldmn',
 'mbtdhecswru',
 'turtledvgwy',
 'sjqersuhcbt']

解释: 如果你把每个零件都打印出来,你就能明白它在做什么, 例如:

>>> print(*(list(word) for word in a.split('-'))
['p', 'a', 'n', 'd', 'a', 'x', 'n', 'g', 'e', 'q', 'r', 'y', 'm', 't', 's', 'o'] ['e', 'z', 'm', 'l', 'a', 'e', 's', 'o', 'w', 'x', 'a', 'q', 'b', 'u', 'j', 'l'] ['n', 'o', 'i', 'l', 'k', 't', 'x', 'r', 'e', 'e', 'c', 'y', 't', 'r', 'q', 'l'] ['g', 's', 'k', 'a', 'b', 'o', 'o', 'f', 's', 'f', 'o', 'x', 'd', 't', 'e', 'i'] ['u', 't', 's', 'm', 'a', 'k', 'o', 't', 'u', 'f', 'o', 'd', 'h', 'l', 'r', 'd'] ['i', 'r', 'o', 'a', 'c', 'h', 'i', 'm', 'p', 'a', 'n', 'z', 'e', 'e', 's', 'a'] ['n', 'i', 'n', 't', 'r', 'w', 'f', 'l', 'y', 'r', 'k', 'h', 'c', 'd', 'u', 'm'] ['j', 'c', 'e', 'c', 'a', 'h', 'k', 'k', 't', 'i', 'k', 'l', 's', 'v', 'h', 'r'] ['m', 'h', 'v', 's', 'b', 'a', 'y', 'k', 'a', 'g', 'o', 'd', 'w', 'g', 'c', 'a'] ['k', 'o', 'a', 'l', 'a', 't', 'c', 'w', 'l', 'k', 'f', 'm', 'r', 'w', 'b', 'b'] ['j', 's', 'r', 'r', 'f', 'd', 'o', 'l', 'p', 'h', 'i', 'n', 'u', 'y', 't']

因此它将所有由-分隔的单词分解成字符。 然后^{}执行以下操作:

>>> print(zip(*(list(word) for word in a.split('-'))))
('p', 'e', 'n', 'g', 'u', 'i', 'n', 'j', 'm', 'k', 'j') ('a', 'z', 'o', 's', 't', 'r', 'i', 'c', 'h', 'o', 's') ('n', 'm', 'i', 'k', 's', 'o', 'n', 'e', 'v', 'a', 'r') ('d', 'l', 'l', 'a', 'm', 'a', 't', 'c', 's', 'l', 'r') ('a', 'a', 'k', 'b', 'a', 'c', 'r', 'a', 'b', 'a', 'f') ('x', 'e', 't', 'o', 'k', 'h', 'w', 'h', 'a', 't', 'd') ('n', 's', 'x', 'o', 'o', 'i', 'f', 'k', 'y', 'c', 'o') ('g', 'o', 'r', 'f', 't', 'm', 'l', 'k', 'k', 'w', 'l') ('e', 'w', 'e', 's', 'u', 'p', 'y', 't', 'a', 'l', 'p') ('q', 'x', 'e', 'f', 'f', 'a', 'r', 'i', 'g', 'k', 'h') ('r', 'a', 'c', 'o', 'o', 'n', 'k', 'k', 'o', 'f', 'i') ('y', 'q', 'y', 'x', 'd', 'z', 'h', 'l', 'd', 'm', 'n') ('m', 'b', 't', 'd', 'h', 'e', 'c', 's', 'w', 'r', 'u') ('t', 'u', 'r', 't', 'l', 'e', 'd', 'v', 'g', 'w', 'y') ('s', 'j', 'q', 'e', 'r', 's', 'u', 'h', 'c', 'b', 't')

因此它从每个组中获取所有相应的字符,每个元组在主代码的每次迭代中都作为letters传递。 然后^{}每个元组,例如在第一次迭代中:

>>> ''.join(('p', 'e', 'n', 'g', 'u', 'i', 'n', 'j', 'm', 'k', 'j'))
'penguinjmkj'

[<item after some operation> for <each item> in <item_list>]这个结构叫做^{}*用于iterable unpacking

它花了一段时间,但我破解了它

您只需要处理索引错误:字符串超出范围

如果你数单词的话,它们超过16个,而分裂后的数组项刚好超过11个;使用try\处理异常,除非在以下位置添加字母:

 word+= elem[i]

下面是我的代码,以及我如何使用try\u catch解决它

a = "pandaxngeqrymtso-ezmlaesowxaqbujl-noilktxreecytrql-gskaboofsfoxdtei-utsmakotufodhlrd-iroachimpanzeesa-nintrwflyrkhcdum-jcecahkktiklsvhr-mhvsbaykagodwgca-koalatcwlkfmrwbb-jsrrfdolphinuyt"
newArr = a.split('-')
newWord = []
i = 0
mylist = []
while i < len(newArr[0]):
    word = ""
    for item in newArr:
       try:
            word  += item[i]
       except:
            break
    i += 1
    mylist.append(word)
print(mylist)


我使用了try\u,除了在追加字母时处理索引错误,然后在while循环中使用的'I'大于for循环中的newArr长度时中断

为你自己努力

类似于Sayandip的代码,但在过去它对我来说更具可读性:

mylist =[]

for element in zip(*a.split('-')):
    mylist.append(''.join(element))

print(mylist)

我明白了

['penguinjmkj', 'azostrichos', 'nmiksonevar', 'dllamatcslr', 'aakbacrabaf', 'xetokhwhatd', 'nsxooifkyco', 'gorftmlkkwl', 'ewesupytalp', 'qxeffarigkh', 'racoonkkofi', 'yqyxdzhldmn', 'mbtdhecswru', 'turtledvgwy', 'sjqersuhcbt']

我在for循环中移动拆分,并使用*构造传递拆分后的整个列表,请参见用法herehere

相关问题 更多 >

    热门问题