📌  相关文章
📜  Python|在列表末尾移动零

📅  最后修改于: 2022-05-13 01:54:34.244000             🧑  作者: Mango

Python|在列表末尾移动零

涉及元素移位的传统问题已在前面多次讨论过,但有时我们在执行它们时有严格的限制,并且了解任何可能的变化都会有所帮助。本文讨论了一个在列表末尾移动 0 的问题,这里要注意的是它只检查 0,不包括传统的“无”(False) 值。让我们讨论可以执行此操作的某些方式。

方法 #1:使用列表理解 + isinstance()

在该方法中,我们分两步执行移位操作。在第一步中,我们获得了我们需要在前面获得的所有值,最后我们只需将零推到结尾。 isinstance 方法用于过滤出 Boolean False 实体。

# Python3 code to demonstrate
# Shift zeroes at end of list
# using list comprehension + isinstance()
  
# initializing list
test_list = [1, 4, None, "Manjeet", False, 0, False, 0, "Nikhil"]
  
# printing original list
print("The original list : " + str(test_list))
  
# using list comprehension + isinstance()
# Shift zeroes at end of list
temp = [ele for ele in test_list if ele or 
        ele is None or isinstance(ele, bool)]
res = temp + [0] * (len(test_list) - len(temp))
  
# print result
print("The list after shifting 0's to end : " + str(res))
输出 :

方法 #2:使用列表理解 + isinstance() + 列表切片

此方法与上述方法类似,唯一的修改是为了减少步骤数,使用列表切片附加 0 以仅 1 步执行整个任务。

# Python3 code to demonstrate
# Shift zeroes at end of list
# using list comprehension + isinstance() + list slicing
  
# initializing list
test_list = [1, 4, None, "Manjeet", False, 0, False, 0, "Nikhil"]
  
# printing original list
print("The original list : " + str(test_list))
  
# using list comprehension + isinstance() + list slicing
# Shift zeroes at end of list
res = ([ele for ele in test_list if not isinstance(ele, int)
        or ele or isinstance(ele, bool)]
        + [0] * len(test_list))[:len(test_list)]
  
# print result
print("The list after shifting 0's to end : " + str(res))
输出 :