如何在 for 循环中不打印 "empty" 列表 - Python
How to not print "empty" list in for loop - Python
下面的列表是我的代码输出的一个片段,你可以看到它在最后打印了 3 次 [],我想弄清楚,如何摆脱它们。
我试过在list comprehension末尾组合"if not [], 0, '', "", element,但好像没有影响。
输出它的代码:
list = [element.lower() for element in newline.split()]
输出:
['do', 'ordain', 'and', 'establish', 'this', 'constitution', 'for', 'the', 'united', 'states', 'of']
['america.']
[]
[]
[]
编辑:
input_name = "file.txt"
inputFile = open(input_name,"r")
for element in input_name:
#Reads input
line = inputFile.readline()
#Removes newline using slice
newline = line[:-1]
#converts
list = [element.lower() for element in newline.split() if not '']
print(list)
file.txt:
为美国颁布并制定这部宪法
美国。
文件是一段文字
出现此问题是因为您出于某种未知原因像这样循环:
for element in input_name:
..
因为 input_name
是一个字符串,所以这是循环遍历字符串中的字符,这意味着您尝试读取八行(一行用于 每个字符 字符串 file.txt
)
input_name
的长度与文件的长度无关……
我想你想要的是摆脱空列表,所以只判断列表本身。如果你在列表理解的末尾做一些事情,你只会影响列表中的元素。
如果列表为空如[],则为False
temp_list = [element.lower() for element in newline.split()]
if temp_list:
print(temp_list)
下面的列表是我的代码输出的一个片段,你可以看到它在最后打印了 3 次 [],我想弄清楚,如何摆脱它们。
我试过在list comprehension末尾组合"if not [], 0, '', "", element,但好像没有影响。
输出它的代码:
list = [element.lower() for element in newline.split()]
输出:
['do', 'ordain', 'and', 'establish', 'this', 'constitution', 'for', 'the', 'united', 'states', 'of']
['america.']
[]
[]
[]
编辑:
input_name = "file.txt"
inputFile = open(input_name,"r")
for element in input_name:
#Reads input
line = inputFile.readline()
#Removes newline using slice
newline = line[:-1]
#converts
list = [element.lower() for element in newline.split() if not '']
print(list)
file.txt:
为美国颁布并制定这部宪法 美国。
文件是一段文字
出现此问题是因为您出于某种未知原因像这样循环:
for element in input_name:
..
因为 input_name
是一个字符串,所以这是循环遍历字符串中的字符,这意味着您尝试读取八行(一行用于 每个字符 字符串 file.txt
)
input_name
的长度与文件的长度无关……
我想你想要的是摆脱空列表,所以只判断列表本身。如果你在列表理解的末尾做一些事情,你只会影响列表中的元素。
如果列表为空如[],则为False
temp_list = [element.lower() for element in newline.split()]
if temp_list:
print(temp_list)