我只想为列表中的每个元素获取相同的索引字母

例如:

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 ...”的列表,但出现索引错误。 我该怎么办?

zyc007 回答:我只想为列表中的每个元素获取相同的索引字母

您可以尝试以下方法:

>>> 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','x','g','e','q','r','y','m','t','s','o'] ['e','z','l','o','w','b','u','j','l'] ['n','i','k','c','l'] ['g','f','i'] ['u','h','d'] ['i','p','a'] ['n','m'] ['j','v','r'] ['m','a'] ['k','b'] ['j','t']

因此它将-分隔的所有单个单词分解为字符。 然后zip执行此操作:

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

因此,它从每个组中获取所有对应的字符,每个元组在主代码的每次迭代中均以letters的形式传递。 然后,您join每个元组,例如在第一次迭代中:

>>> ''.join(('p','j'))
'penguinjmkj'

[<item after some operation> for <each item> in <item_list>]此结构称为list comprehension*用于iterable unpacking

,

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

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

如果您计算单词的个数超过16,而拆分后的数组项刚好超过11。使用try_except处理异常,在以下位置附加字母:

 word+= elem[i]

这是我的代码,以及如何使用try_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_except处理索引错误,然后在while循环中使用的“ i”大于for循环中的newArr长度时中断。

为自己而努力!

,

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

mylist =[]

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

print(mylist)

我明白了

['penguinjmkj','sjqersuhcbt']

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

本文链接:https://www.f2er.com/2928813.html

大家都在问