在列表中拆分字符串时,Python仅垂直打印



我将列表中的每个字符串切成两半。然而,当我打印字符串"的前半部分时,我想分别打印每半部分;具有";其为";哈;它把我每一半的第一个字母都打印出来。有人知道原因吗?

lis = ['have', 'agreat', 'day']

for x in lis:
first = x[:len(x)//2]
second = x[len(x)//2:]
print(first) 
output>>>
ha
agr
d
print(first[0])
output>>>
h
a
d

它运行良好:

lis = ['have', 'agreat', 'day']  
for x in lis: 
first = x[:len(x)//2] 
second = x[len(x)//2:] 
print(first+'|'+second) 

ha|ve
agr|eat
d|ay

UPDATE您应该将您的前半部分和后半部分添加到不同的列表中。然后在循环之外,只需使用random随机加入两个half。

请记住,如果您的循环中有任何逻辑(如打印(,它将为每次迭代打印。这就是你得到h、a、d的原因,因为你要打印列表中每个单词前半部分的第一个字母。

import random
lis = ['have', 'agreat', 'day']
first = []
second = []
for x in lis:
first.append(x[:len(x)//2])
second.append(x[len(x)//2:])
final = random.choice(first) + random.choice(second)
print(final)

输出:agrve


事实上,你的拆分很好,但你没有打印出你想要的。在第二次打印中,您将首先打印[0],这将给您h(have(、a(agreat(、d(day(。

只更改第一个[0],按第二个

for x in lis:
first = x[:len(x)//2]
second = x[len(x)//2:]
print("List " + x)
print(first) 
print(second)

结果

List have
ha
ve
List agreat
agr
eat
List day
d
ay

first[0]将打印字符串前半部分的第一个字母。如果你有have,你把它切成两半first = ha-second = vefirst[0]会给你h。所以我想你想打印ha - ve

lis = ['have', 'agreat', 'day']

for x in lis:
first = x[:len(x)//2]
second = x[len(x)//2:]
print(first,'-',second) 

输出

ha - ve
agr - eat
d - ay

最新更新