📜  Python列表和数组的比较

📅  最后修改于: 2021-09-08 15:01:38             🧑  作者: Mango

Python列表

Python编程语言有四种集合数据类型,即List、Tuple、Set 和 Dictionary 。列表是一个可变且有序的集合,即列表的元素可以更改,并且它保持其项目的插入顺序。由于顺序维护的特性,列表的每个元素都有一个固定的索引,它允许列表有重复的元素。在Python, list 非常有用,因为它能够包含非同类元素。

以下是可以对列表执行的一些操作:

# Python program to demonstrate
# some operations on list
  
# Declaring a List of integers 
IntList = [10, 20, 30] 
print("List of numbers: ")
  
# Printing the list 
print(IntList) 
  
# Declaring a List of strings
StrList = ["Geeks", "For", "Geeks"] 
print("List of Strings: ")
  
# Printing the list 
print(StrList) 
  
# Declaring a list of non-homogeneous elements
Non_homogeneous_list = [10, "Geeks", 20.890,\
                        "for", 30, "geeks"]
print("List of non-homogeneous elements: ")
  
# Printing the list
print(Non_homogeneous_list)
  
# Printing size of a list
print("Size of the Non-homogeneous list: ",\
            len(Non_homogeneous_list))
  
# Declaring a list
NewList = ["Geeks", "for", "Geeks"]
print("Original List: ", NewList)
  
# Adding an item to the list
  
# Adding an item in the list 
# using the append method
NewList.append("the")
  
# Printing the modified list
print("After adding an element the"\
                     "list becomes: ")
print(NewList)
  
# Adding an item in the list using the insert 
# method to add an element at a specific position
NewList.insert(3, "is")
  
# Printing the modified list
print("After adding an element at"\
        "index 3 the list becomes: ")
print(NewList) 
  
# Adding multiple items to the list at the
# end using extend method
NewList.extend(["best", "CS", "website"]) 
  
# Printing the modified list
print("After adding 3 elements at the"\
              "end, the list becomes: ")
print(NewList)
  
# Removing an item from the list
  
# Removing an element by 
# writing the element itself
NewList.remove("the")
  
# Printing the modified list
print("After removing an element"\
               "the list becomes: ")
print(NewList)
  
# Removing an element by 
# specifying its position
NewList.pop(3)
  
# Printing the modified list
print("After removing an element "\
    "from index 3 the list becomes: ")
print(NewList)
输出:
List of numbers: 
[10, 20, 30]
List of Strings: 
['Geeks', 'For', 'Geeks']
List of non-homogeneous elements: 
[10, 'Geeks', 20.89, 'for', 30, 'geeks']
Size of the Non-homogeneous list:  6
Original List:  ['Geeks', 'for', 'Geeks']
After adding an element thelist becomes: 
['Geeks', 'for', 'Geeks', 'the']
After adding an element atindex 3 the list becomes: 
['Geeks', 'for', 'Geeks', 'is', 'the']
After adding 3 elements at theend, the list becomes: 
['Geeks', 'for', 'Geeks', 'is', 'the', 'best', 'CS', 'website']
After removing an elementthe list becomes: 
['Geeks', 'for', 'Geeks', 'is', 'best', 'CS', 'website']
After removing an element from index 3 the list becomes: 
['Geeks', 'for', 'Geeks', 'best', 'CS', 'website']

要获得有关Python列表的更深入的知识,请单击此处。

Python数组

Python数组也是一个集合,但它的项存储在连续的内存位置。它只能存储同类元素(相同数据类型的元素)。数组非常有利于对元素进行数学运算。与列表不同,数组不能直接声明。要创建数组,必须导入array模块,并且声明的语法与列表的语法不同。

以下是可以对数组执行的一些操作:

# Python program to demonstrate
# some operations on arrays
  
# importing array module 
import array as arr
  
# declaring an array of integer type
# 'i' signifies integer type and
# elements inside [] are the array elements 
a1 = arr.array('i', [10, 20, 30])
  
# printing array with 
# data type and elements
print("Array a1: ", a1)
  
# printing elements of array
print ("Elements of the array"\
         "a1 is : ", end = " ") 
for i in range (len(a1)): 
    print (a1[i], end =", ")
print()
      
# Declaring an array of float type
# 'd' signifies integer type and
# elements inside [] are the array elements 
a2 = arr.array('d', [1.5, 2.4, 3.9])
  
# printing elements of array
print ("Elements of the array"\
          "a2 is : ", end = " ") 
for i in range (len(a2)): 
    print (a2[i], end =", ")
print()
  
# Adding an item to the array
      
# Printing the elements of array a1
print ("Original elements of the"\
       "array a1 is : ", end = " ") 
print(*a1)
      
# Adding an element at the end of
# array by using the append method
a1.append(40)
  
# printing the modified array
print ("Elements of the array a1"\
           "after adding an element"\
           "at last: ", end = " ")
print(*a1)
  
# Adding an element to the array at a 
# specific index using the insert method
a1.insert(3, 35)
  
# printing the modified array
print ("Elements of the array a1"\
           "after adding an element"\
           "at index 3: ", end = " ")
print(*a1)
      
# Removing an element from the array
  
# Removing an element by writing the elements itself
a1.remove(20)
  
# Printing the modified array
print("Array a1 after removing"\
        "element 20: ", end = " ")
print(*a1)
      
# Removing an element of a specific index
# Removing the element of array a1 present at index 2
a1.pop(2)
  
# Printing the modified array
print("Array a1 after removing"\
"element of index 2: ", end = " ")
print(*a1)
输出:
Array a1:  array('i', [10, 20, 30])
Elements of the arraya1 is :  10, 20, 30, 
Elements of the arraya2 is :  1.5, 2.4, 3.9, 
Original elements of thearray a1 is :  10 20 30
Elements of the array a1after adding an elementat last:  10 20 30 40
Elements of the array a1after adding an elementat index 3:  10 20 30 35 40
Array a1 after removingelement 20:  10 30 35 40
Array a1 after removingelement of index 2:  10 30 40

要获得有关Python数组的更深入的知识,请单击此处。

Python列表和数组的相似之处

数组和列表都用于存储数据:集合的目的都是存储数据。虽然列表用于存储同构和非同构数据,但数组只能存储同构数据。

# Python program to demonstrate data 
# storing similarities in array and list
  
# importing array module 
import array as arr
  
# Declaring a Homogeneous List of strings
Homogeneous_List = ["Geeks", "For", "Geeks"] 
print("List of Strings: ")
  
# Printing the list 
print(Homogeneous_List) 
  
# Declaring a list of 
# non-homogeneous elements
Non_homogeneous_list = [10, "Geeks",\
        20.890, "for", 30, "geeks"]
print("List of non-homogeneous elements: ")
  
# Printing the list
print(Non_homogeneous_list)
  
# declaring an array of float type
# 'd' signifies integer type and
# elements inside [] are the array elements 
Homogeneous_array = arr.array('d',\
                [1.5, 2.4, 3.9])
  
# printing elements of array
print ("Elements of the array is"\
                " : ", end = " ") 
for i in range (len(Homogeneous_array)): 
    print (Homogeneous_array[i], end =", ")
输出:
List of Strings: 
['Geeks', 'For', 'Geeks']
List of non-homogeneous elements: 
[10, 'Geeks', 20.89, 'for', 30, 'geeks']
Elements of the array is :  1.5, 2.4, 3.9,

List 和Array 都是可变的:List 和数组都可以修改它们的元素,即它们是可变的。

# Python program to demonstrate 
# both the list and array is mutable
  
# importing array module 
import array as arr
  
# Declaring a list
List1 = ["Geeks", 1, "Geeks"]
  
# Printing original list
print("Original list: ", List1)
  
# Changing the value of the 
# element at a specific index
List1[1] = "for"
  
# Printing modified list
print("\nModified list: ", List1)
  
# Declaring an array with integers values
Array1 = arr.array('i', \
   [10, 20, 30, 37, 50, ])  
    
# Printing original array 
print ("\nOriginal array: ", end =" ") 
for i in range (len(Array1)): 
    print (Array1[i], end =" ") 
    
    
# Updating an element in the array 
Array1[3] = 40
  
# Printing modified Array:
print("\nModified array: ", end ="") 
for i in range (len(Array1)): 
    print (Array1[i], end =" ") 
输出:
Original list:  ['Geeks', 1, 'Geeks']

Modified list:  ['Geeks', 'for', 'Geeks']

Original array:  10 20 30 37 50 
Modified array: 10 20 30 40 50

列表和数组的元素都可以通过索引和迭代访问:为了访问列表和数组的元素,我们可以选择使用索引号或者我们可以通过迭代遍历它们。

# Python program to demonstrate 
# that elements of list and array can
# be accessed through index and iteration
  
# importing array module 
import array as arr
  
# Declaring a list 
List1 = [10, 20, 30, 20, 10, 40]
  
# Printing the list
print("List1 elements: ", List1, "\n")
  
# Accessing elements of list by index number
print("Element at index 0: ", List1[0])
print("Element at index 1: ", List1[1])
print("Element at index 3: ", List1[3])
print("Element at index 4: ", List1[4])
  
# Accessing elements of the list
# using negative indexing
  
# Printing last element of the list
print("Element at last index: ", List1[-1])
  
# Printing 3rd last 
# the element of the list
print("Element at "\
 "3rd last index: ", List1[-3])
  
# Accessing elements of list through iteration
print("Accessing through iteration: ", end = " ")
for item in range(len(List1)):
    print(List1[item], end =" ")
  
  
# Declaring an array
Array1 = arr.array('i',\
[10, 20, 30, 40, 50, 60])
print("\nArray1: ", Array1)
  
# Accessing the elements of an array
      
# Access element of 
# array by index number
print("Element of Array1"\
  " at index 3: ", Array1[3])
  
# Accessing elements of 
# array through iteration
print("Accessing through iteration:"\
               " ", end = " ")
for i in range (len(Array1)): 
    print (Array1[i], end =" ")
输出:
List1 elements:  [10, 20, 30, 20, 10, 40] 

Element at index 0:  10
Element at index 1:  20
Element at index 3:  20
Element at index 4:  10
Element at last index:  40
Element at 3rd last index:  20
Accessing through iteration:  10 20 30 20 10 40 
Array1:  array('i', [10, 20, 30, 40, 50, 60])
Element of Array1 at index 3:  40
Accessing through iteration:  10 20 30 40 50 60

列表和数组都可以切片:切片操作对列表和数组都有效,以获得一定范围的元素。

# Python program to demonstrate 
# that both list and array can
# be accessed sliced
  
# importing array module 
import array as arr
  
# Declaring a list 
List1 = [10, 20, 30, 20, 10, 40]
  
# Accessing a range of elements in the 
# list using slicing operation
  
# Printing items of the list
# from index 1 to 3 
print("List elements from "\
 "index 1 to 4: ", List1[1:4])
  
# Printing items of the 
# list from index 2 to end
print("List elements from "\
"index 2 to last: ", List1[2:])
  
# Declaring an array
Array1 = arr.array('i', 
 [10, 20, 30, 40, 50, 60])
  
# Accessing a range of elements in the 
# array using slicing operation
Sliced_array1 = Array1[1:4] 
print("\nSlicing elements of the "\
"array in a\nrange from index 1 to 4: ") 
print(Sliced_array1) 
    
# Print elements of the array  
# from a defined point to end 
Sliced_array2 = Array1[2:] 
print("\nSlicing elements of the "\
"array from\n2nd index till the end: ") 
print(Sliced_array2) 
输出:
List elements from index 1 to 4:  [20, 30, 20]
List elements from index 2 to last:  [30, 20, 10, 40]

Slicing elements of the array in a
range from index 1 to 4: 
array('i', [20, 30, 40])

Slicing elements of the array from
2nd index till the end: 
array('i', [30, 40, 50, 60])

Python列表和数组的区别:

创建的区别:与作为Python语法一部分的列表不同,数组只能通过导入数组模块来创建。可以通过简单地将一系列元素放在方括号周围来创建列表。以上所有代码都是这种差异的证明。

数组和列表之间的内存消耗:即使列表和数组存储相同数量的元素,它们也会占用不同数量的内存。在这种情况下,发现数组更有效,因为它们以非常紧凑的方式存储数据。

# Python program to demonstrate the 
# difference in memory consumption  
# of list and array
  
# importing array module 
import array as arr
  
# importing system module 
import sys 
    
# declaring a list of 1000 elements  
List = range(1000) 
    
# printing size of each element of the list 
print("Size of each element of"\
" list in bytes: ", sys.getsizeof(List)) 
    
# printing size of the whole list 
print("Size of the whole list in"\
" bytes: ", sys.getsizeof(List)*len(List)) 
    
# declaring an array of 1000 elements  
Array = arr.array('i', [1]*1000) 
    
# printing size of each 
# element of the Numpy array 
print("Size of each element of "\
"the array in bytes: ", Array.itemsize) 
    
# printing size of the whole Numpy array 
print("Size of the whole array"\
" in bytes: ", len(Array)*Array.itemsize) 
输出:
Size of each element of list in bytes:  48
Size of the whole list in bytes:  48000
Size of each element of the array in bytes:  4
Size of the whole array in bytes:  4000

执行数学运算:可以在数组中执行数学运算,例如将集合的每个元素除以或添加一定数量的数字,但列表不支持此类算术运算。数组为此目的进行了优化,而要在列表中执行这些操作,必须分别将操作应用于每个元素。

# Python program to demonstrate the 
# difference between list and array in  
# carrying out mathematical operations
  
# importing array module 
from numpy import array
    
# declaring a list 
List =[1, 2, 3] 
    
# declaring an array 
Array = array([1, 2, 3])
    
try: 
    # adding 5 to each element of list 
    List = List + 5
        
except(TypeError): 
    print("Lists don't support list + int") 
    
# for array
try: 
      
    Array = Array + 5
    
    # printing the array 
    print("Modified array: ", Array) 
        
except(TypeError): 
    print("Arrays don't support list + int") 
输出:
Lists don't support list + int
Modified array:  [6 7 8]

调整大小:数组一旦声明就不能调整大小。唯一的方法是将旧数组的元素复制到更大的数组中。虽然列表可以非常有效地重新调整大小。

可以存储的数据: List 可以存储同构数据和非同构数据,而数组只支持存储同构数据。

如果您希望与专家一起参加现场课程,请参阅DSA 现场工作专业课程学生竞争性编程现场课程