Python 根据现有列表的字母索引创建列表
Python create list based on letter index of existing list
所以我正在尝试编写一个允许我获取文本文件的脚本,
将布局旋转 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']
我所在的位置:
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']
所以我正在尝试编写一个允许我获取文本文件的脚本, 将布局旋转 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']
我所在的位置:
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']