Python基于现有列表的字母索引创建列表



所以我试图在一个脚本上工作,它允许我采取一个文本文件,将布局旋转90度,并保持所有字母在正确的方向上(而不是让字母侧转)

如果我有一个这样的列表:

x = ['the','boy','ate','jam','pie']

如何根据每个列表项中字母的索引位置创建一个列表

letters[0] = t,b,a,j,p
letters[1] = h,o,t,a,i
letters[2] = e,y,e,m,e
x = ['tbajp','hotai','eyeme']

Where I am at:

new_list = []
x = ["the","boy","ate","jam","pie"]
y = len(x)
t = 0
while y > 0:
z = len(x[0])
c = 0
while z > 0:
print(x[t][c])
z -= 1
c += 1
y -= 1
t += 1

使用list(zip(*x))的最短方法:

x = ['the','boy','ate','jam','pie']
rotate_list = [''.join(i) for i in list(zip(*x))]
print(rotate_list)

输出:

['tbajp', 'hotai', 'eyeme']

编辑:

您可以使用以下命令反转rotate_list:

reversed_strings = [''.join(i)[::-1] for i in list(zip(*x))]

输出:

['pjabt', 'iatoh', 'emeye']

只需使用zip函数:

x = ['the','boy','ate','jam','pie']
list(zip(*x))
[('t', 'b', 'a', 'j', 'p'), ('h', 'o', 't', 'a', 'i'), ('e', 'y', 'e', 'm', 'e')]

注意:如果字符串的长度不相等,您可能需要使用itertools.zip_longest来代替

def rotate(input_list: list) -> list:
print(f"Input List is: {input_list}")
output_list = []
for i in range(0, len(input_list)):
output_string = ""
for string in input_list:
if i < len(string):
output_string += string[i]
if output_string:
output_list.append(output_string)
print(f"Output List is: {output_list}")
return output_list

rotate(['the', 'boy', 'ate', 'jam', 'pie'])
正如你在上面的代码中看到的,
  • 我们在input_list上迭代,从每个字符串中获取索引i处的字符。
  • 由于所有字符串的长度可能不相同,我们需要确保我们没有试图获取字符串中不存在的索引。
  • 最后,我们检查output_string是否生成,并将其附加到输出列表中。输出:

#python3 test5.py
Input List is: ['the', 'boy', 'ate', 'jam', 'pie']
Output List is: ['tbajp', 'hotai', 'eyeme']

相关内容

  • 没有找到相关文章

最新更新