使用
所以我试图在一个脚本上工作,它允许我采取一个文本文件,将布局旋转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']