📜  Python列表和数组之间的比较

📅  最后修改于: 2021-05-20 07:14:43             🧑  作者: 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可以存储同构和非同构数据,而数组仅支持同构数据的存储。