3、list改变指针还是改变值

list1改变指针还是改变值

1、python中相同数据类型的list和string可以直接用“+”相连

“+”只是扩展了list长度,并不是每个元素相加。

lst1 = [‘a‘,‘c‘]
lst2 = [‘d‘,‘g‘]
lst = lst1 + lst2

s1 = "adc"
s2 = "agf"
s3 = s1 + s2

反转列表

Def rev(lst):
    lt = []
    for i in lst:
        lt = [i] + lt
    return lt

与java对比

1、java不能list不能直接用“+”相连,java要通过对象的方法来实现 如:

String a[] = { "A", "E", "I" };
String b[] = { "O", "U" };
List list = new ArrayList(Arrays.asList(a));
list.addAll(Arrays.asList(b));
Object[] c = list.toArray();
System.out.println(Arrays.toString(c));

[A, E, I, O, U]

更多参考:
https://www.runoob.com/java/arrays_merge.html
https://www.cjavapy.com/article/290/

2、list的特性

注意索引(index)和切片(slice)的区别

lst = [‘s‘,‘f‘,‘i‘]
ls1 = lst[0]
ls2 = lst[0:1]
type(lst1) --->str,进行索引操作
type(lst2) --->list,进行切片操作

虽然lst1和lst2值相同,但是数据类型不同

3、同时接受list和string数据类型的数据,交换第一个和第二个元素

def swap(ls):
  return ls[1:2]+ls[0:1]+ls[2:]

4、当传递数据类型为应用数据类型

myList = list("Isaac")

def swapL(xs) :
    return [xs[-1]]+xs[1:-1]+[xs[0]]

def swapLx(lst):
    lst = swapL(lst)

swapLx(myList)
myList

结果为: [‘I‘, ‘s‘, ‘a‘, ‘a‘, ‘c‘]

解释:

5、当只是改变参数的具体的值的时候

myList = list("Isaac")

def swapL(xs) :
    return [xs[-1]]+xs[1:-1]+[xs[0]]

def swapLx(lst):
    lst[:] = swapL(lst)

swapLx(myList)
myList

结果为:
[‘c‘, ‘s‘, ‘a‘, ‘a‘, ‘I‘]

解释:

6、总结

  • list数据类型直接赋值是改变其指针,指向新的变量,原始存放的数据并不改变
  • list[:]数据直接赋值是改变其值,存放的值直接发生改变

7、更多小技巧

def swapx(lst):
    lst[-1],lst[0] = lst[0],lst[-1]

swapx(myList)
myList

结果:
[‘c‘, ‘s‘, ‘a‘, ‘a‘, ‘I‘]

原文地址:https://www.cnblogs.com/Stephanie-boke/p/11711318.html

时间: 2024-10-28 10:20:56

3、list改变指针还是改变值的相关文章

一维数组,二维数组,三维数组,数组与指针,结构体数组,通过改变指针类型改变访问数组的方式

 打印数组中的每个元素,打印每个元素的地址: #include <stdio.h> #include <stdlib.h> void main(void) { int a[10] = { 1, 2, 3, 4, 5, 6, 7, 8, 9, 10 }; for (int *p = a; p < a + 10;p++)  //指针类型决定4个字节 { printf("\n%p,%d", p, *p); } getchar(); } 指针数组 #inclu

改变指针的值

#include <iostream> void fun(int** a) { *a = 0;//改变指针的值 } void fun(int*& a) { a = 0;//改变指针的值 } int main() { int a = 90; int* p = &a; fun(p); return 0; }

向null地址copy数据和不断改变指针指向

#define _CRT_SECURE_NO_WARNINGS#include<stdio.h>#include<stdlib.h>#include<string.h> int main11(){ system("pause"); return 0;} void main22(){ char *p1 = NULL; p1 = 0x00077; strcpy(p1, "11111222"); system("pause&q

38 py改变函数参数的值关键字参数和参数默认值函数中可变参数将序列中的元素值作为函数对应的参数值传

第五课:改变函数参数的值 一个python函数可以有任意多个参数,在一个函数的外部来定义变量,然后把变量作为参数传入到函数内,并且在函数的内部来修改函数的参数值,函数结束之后,这些变量的值在如何变化呢? 给函数传递值有2种:1种是值传递,1种是引用传递 # 改变函数参数的值 # 值传递(数值.字符串.布尔 这些都是值传递) 在函数的内部修改变量值,不改变原参数定义的参数值,解释为: 这个在函数中不会改变原来定义(函数外部)的值 这是因为函数里面会有一个占的概念,外边的变量的值会复制给 占 里面,

AE IRasterCursor 改变栅格图层像素值

刚刚说的是获取像素值.如果要进一步改变像素值的话,需要用到IRasterEdit接口的Write方法.Write方法的参数有两个,一个是在栅格图像中的左上角位置(行列值不是坐标值),另一个就是获取像素值时提到的PixelBlock. 执行完Write方法后要对实现IRasterEdit接口的对象进行释放. 1 public void ChangePixelValue(double xMax, double xMin, double yMax, double yMin,double[,] Pixe

组件之间的通信(子组件-改变父组件的值)

在vue中,组件之间的通信,是不建议子组件改变父组件的值,因为一个父组件有可能会有很多子组件,改来改去会很难管理(别人都这样说,我信) 试试: <!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title></title> <script src='../vue.js'> </script> </head> <bod

jQuery改变label/input的值,改变class,改变img的src

jQuery改变label/input的值,改变class,改变img的src jQuery改变label的值: $('#aID').text("New Value"); jQuery改变input的值: $('#aID').val("New Value"); jQuery改变class属性: $('#aID').attr('class', "newClass");//设置class $('#aID').addClass('newClass');

js/jquery获取文本框的值与改变文本框的值

我们就用它来学习获取文本框的值及改变文本框的值. 代码如下 复制代码 <script>function get1(){ document.getElementById("txtbox2").value=document.getElementById("txtbox").value; //获取文本框1的值,并赋值给文本框2}</script> <table width="500" border="0"

我错误的去试图用QList里面的at方法改变const常量的值

在做曲线工厂的程序的时候,我写了一行代码是这样的: AllLines.at(cruveSecions).p1().setY(20); AllLines是QList<QLineF>类型的,cruveSections是int类型的,这里我犯了一个很低级但是很容易犯的错误,我本是图个方便,然后导致AllLines里面的数据老是更新不了,我很纳闷,最后同事通过查API给我找出了错误的原因.是这样的QList里面通过at访问出来的是个常量,里面的值不能修改成功,但是我很纳闷编译器也不报错,我想可能是se